美文网首页
创建OpenGL渲染环境

创建OpenGL渲染环境

作者: Mr_约科 | 来源:发表于2019-07-08 11:20 被阅读0次

    创建时间:2019.07.06
    修改时间:
    ONE 2019.07.07
    TWO 2019.07.08


    1.选定像素格式

        //设备上下文句柄
        HDC dc = GetDC(hwnd);
        PIXELFORMATDESCRIPTOR pfd;
        memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR));
        pfd.nVersion = 1;
        pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
        //颜色缓冲区R(8bit)G(8bit)B(8bit)A(8bit)
        pfd.cColorBits = 32;
        //深度缓冲器
        pfd.cDepthBits = 24;
        //蒙板缓冲区
        pfd.cStencilBits = 8;
        //像素类型
        pfd.iPixelType = PFD_TYPE_RGBA;
        pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
        //选取一个像素格式
        int pixelFormat = ChoosePixelFormat(dc, &pfd);
        //设置像素格式
        SetPixelFormat(dc, pixelFormat, &pfd);
    

    2.创建渲染环境

        HGLRC rc = wglCreateContext(dc);
    

    3.使渲染环境生效

        wglMakeCurrent(dc, rc);
    

    额外的工作

    1.实现加载文件的接口

    unsigned char * LoadFileContent(const char*path/*文件的路径*/, int &filesize/*文件有多大*/);
    {
        //初始化
        unsigned char* fileContent = nullptr;
        filesize = 0;
        //打开文件
        FILE* pFile = fopen(path, "rb"/*读二进制方式打开文件*/);
        //文件打开成功
        if (pFile)
        {
            //文件的指针移动到某个位置
            fseek(pFile, 0, SEEK_END/*文件结尾*/);
            //返回文件的大小
            int nLen = ftell(pFile);
            if (nLen > 0)
            {
                //文件指针回到头部
                rewind(pFile);
                //比实际大小大1,最后以'\0'标记
                fileContent = new unsigned char[nLen + 1];
                fread(fileContent, sizeof(unsigned char), nLen, pFile);
                //最后一位
                fileContent[nLen] = 0;
                filesize = nLen;
            }
            //关闭文件
            fclose(pFile);
        }
        //返回文件指针
        return fileContent;
    }
    
    fopen报错
    解决方法
    工程文件名--->属性选项--->C/C++--->预处理器--->在编辑窗口中添加一句命令_CRT_SECURE_NO_WARNINGS

    2.场景类

    scene.h

    void Init();
    void SetViewPortSize(float width, float height);
    void Draw();
    

    scene.cpp

    void Init()
    {
    }
    
    void SetViewPortSize(float width, float height)
    {
    }
    
    void Draw() 
    {
    }
    

    相关文章

      网友评论

          本文标题:创建OpenGL渲染环境

          本文链接:https://www.haomeiwen.com/subject/rgvmhctx.html