一直以来,网上有很多关于OpenGL在MFC环境下配置的教程,但是,一般都说的不够详细,或者配置过程不够完整,今天我在自己摸索和学习的基础了,写出了这篇文章,尽量说明了坐标系的设定、添加深度测试类型以防止颜色变淡或者不纯等等。首先说明,本配置教程配置完成的OpenGL环境为二维环境,坐标系为中心坐标系,客户区中心为OpenGL坐标系的中心,向右为x轴增大方向;向上为y轴增大方向,与其他的配置方法不太一样,如果想对坐标系进行修改,只需修改ReSizeGLScene函数中的下面一句:
//参数分别代表(左下角x坐标,右上角x坐标,左下角y坐标,右上角y坐标)——坐标全相对于窗口左下角--原点
gluOrtho2D(-cx/2, cx/2, -cy/2, cy/2);
(1) 新建一个MFC单文档应用程序,程序建立完成后,会自动设置一个视类,如CdispView类,OpenGL是图形操作,所以所有的操作都是在视类上进行的。
(2) 添加OpenGL头文件和库文件,1510实验室使用的是基于OpenGL4.0标准的最新版freeglut3.0开源库,OpenGL开源库种类很多,比较出名的有最早的glut库、OpenLuGL等等,这里选中这个库的原因是freeglut原生支持32/64位系统,并且有针对64位系统优化的代码,方便后期升级,此外,这个库在SDK上基本保持了与glut的一致性,方便学习。下面(3)就来详细的讲如何配置
(3) 将FreeGlut_OpenGL_Dll文件夹中头文件文件夹打开,将其中的四个头文件添加到工程的附加包含目录下,或直接将其放在工程对应的目录下;将FreeGlut_OpenGL_Dll文件夹中32位库文件夹打开(64位系统也可以用32位库,目前开发的时候也是按32位库进行开发的,兼容性更好一点),将freeglut.lib和freeglut.dll两个dll文件添加到工程的附加库目录下,或直接将其放在工程对应的目录下;
(4) 在视类的头文件中包含OpenGL库:
//添加OpenGL头文件,调用OpenGL库
#include"glut.h"
如果还需要用牛四强写的OpenGL的常用画图函数,需要添加下面代码和相应的头文件、库文件
//调用我自己写的OpenGL常用画图函数
#include"OpenGLCommonDrawHead.h"
#pragmacomment(lib,"OpenGLCommonDraw.lib")
(5) 在类的属性栏,为下述消息加入消息处理函数:WM_CREATE (for OnCreate), WM_DESTROY (for OnDestroy), WM_SIZE (forOnSize), WM_ERASEBACKGROUND (f