创建OpenGL渲染环境

2019-07-08  本文已影响0人  Mr_约科

创建时间: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() 
{
}
上一篇 下一篇

猜你喜欢

热点阅读