本人上计算机图形学课时要做的大作业是基于MFC框架用OpenGL实现一些功能。但是我一开始并不知道怎么在MFC中加入OpenGL模块。于是我在网上找了半天终于找到一篇文章,阅读之后受益匪浅。今天我准备把这篇文章翻译出来。
原文地址:Setting Up OpenGL in an MFC Control
翻译如下:
我在网上没有看到许多文章关于集成功能的,哪怕仅仅是在一个MFC控制结构中设置基本的OpenGL窗口的文章也没有。本教程的目的是一步一步地教大家如何在MFC控制结构(例如图片控制)中初始化一个OpenGL渲染上下文(rendering context),还有基于定时器、改变大小事件、基本相机功能等的基本绘制功能。在本教程中我将在Microsoft Visual Studio .NET 2003 的环境下操作(注:译者用的是VS2015),而且我将尽量让各个水平的人都能理解。我将为初学者增加一些特定的步骤,非初学者也可以跳过这些步骤去找自己所需要的部分。无论如何,欢迎大家的评论(无论好坏),我将近我全力去更新此文直到每个人都满意。谢谢大家。那么让我们开始吧!
第一部分:创建最初的OpenGL窗口
第1步:创建工程
首先我们先要创建一个MFC对话框应用程序项目。文件->新建->项目 选择MFC应用程序并将其命名为"oglMFCDialog"。把工程保存在哪里取决与你,你只要能记住你把它存到哪儿就行了。当MFC应用程序向导出现的时候,在应用程序类型中选择基于对话框然后点击完成按钮。其他附加的设置选项在用户界面功能中。比如说我就选择了最小化框。
第2步 创建控制模块
在资源浏览器标签中找到资源视图,展开Dialog文件夹,然后双击自动生成的IDD_OGLMFCDIALOG_DIALOG对话框。你需要添加一个控制组件用于OpenGL内容的渲染。一个简单的图片控制组件就可以,那么就在工具箱中选择Picture Control吧。
注意:如果工具箱没有出现,在菜单栏中找视图->工具箱把它调出来。
你可以直接将组建拽到你的对话窗口,也可以随时调整大小。
你将需要对这个Picture Control设置一些属性值。当这个Picture Control被选中时,它的属性在右下角,设定以下属性:
Visible:False
ID:IDC_OPENGL
你也许觉得很奇怪为什么将Visible属性设为False。当你在任何一个MFC中加载OpenGL渲染内容时,你能用到的只是这个控件的方形位置来辅助绘制OpenGL内容。由于一些奇怪的原因,如果Visible设为True,这个控件就会覆盖掉你的OpenGL内容。
第3步 添加OpenGL类
接下来,为了设置OpenGL,我选择为其添加一个单独的类。把工程里的主要部分分成单独的类,这是一个好习惯。因此我将把OpenGL和MFC分离。
要添加一个类,点击解决方案资源管理器标签,在树中右击oglMFCDialog工程,选择添加->添加类,再从模板中选择C++类然后点击添加。当一般C++类向导出现时,设置以下属性:
类名:COpenGLControl
基类:CWnd
访问(Access):public
勾选虚析构函数
然后点击完成,就创建成功了。
第4步 添加项目库(Adding Project Libraries)
由于你要用到OpenGL的渲染功能,你还需要向工程中链接一些库。在树中再次右击oglMFCDialog项目,选择属性,在属性页中选择链接器->输入,设置以下变量:
附加依赖项:opengl32.lib;glu32.lib
注意:这两个*.lib文件中间不要有任何空格
第5步 设置类的变量
在本工程的范围内,一些变量需要被添加到OpenGLControl.h中,公有的和私有的都需要,还需要添加#include语句,代码如下: