现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

windows下opengl(五):封装属于自己的轻型glut库

2014-10-31 22:40 工业·编程 ⁄ 共 977字 ⁄ 字号 暂无评论

经过前面4课,我们已经可以完成以下几个工作:

        1)创建OpenGL环境

        2)创建与OpenGL绑定的窗口

        3)处理窗口消息

        4)产生空间点

        5)发送空间点给GPU

        6)创建着色器,对着色器进行一些参数设置

        7)设置一些OpenGL状态机属性

        8)绘制、渲染图形

        这其实就是OpenGL工作的基本框架,其它如着色器的千变万化,如图元的旋转,纹理贴图都不会改变这个基本框架。

        属于1),2),3)的代码其实就是glut库完成的主要工作,下面我们来尝试对自己的代码,如2.4节中的示例代码进行一些封装,使得代码看起来更干净。

        换句话说,这一章的目的就是完成对1),2)两部分代码的封装。

    封装之后,入口函数的代码看起来是这个样子的:

    ////////////////////////////////////////////////////////////////////

    // 入口函数

    int _stdcall WinMain(HINSTANCE hInst,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nShowCmd) 

    //创建窗口

    HWND hWnd = CreateDefaultOGLWindow(hInst,WndProc); 

    //显示窗口

        ShowOGLWindow(hWnd); 

    //初始化顶点数据

        InitVertex(); 

    //发送顶点数组给GPU

        SendToGPU(); 

    //创建着色器

        CreateShader(); 

    //绘制图形到窗口

        DrawToWindow(); 

    //进入主循环

        EnterMainLoop(); 

    return 0; 

                这样入口函数就显得很干净了,而且在后续章节中,我们仍然使用这个代码框架,为了实践不同的内容,我们只需要对InitVertex、SendToGPU、CreateShader、DrawToWindow中的相应内容进行修改就可以了。

                这个封装就是对3.3中的示例程序进行的,所以代码基本是一样的,只是将某些代码封装到oglwindow库中去了,运行结果是一样的。

               本章代码可以下载

        给我留言

        留言无头像?