在这篇文章中,将探讨如何使用C++.NET和Visual Studio创建一个OpenGL应用程序。这个过程涉及到使用应用程序生成器,它可以帮助快速搭建一个基本的OpenGL应用程序框架。
首先,需要将OGLWiz.awx和Oglwiz.hlp文件复制到自定义应用程序向导目录(通常是"C:\Program Files\MicrosoftVisual Studio\Common\MSDev98\Template")。
使用此应用程序生成器生成的项目包含两个类:
存在一个全局实例CApp(gApp),它拥有一个CMainWnd实例(m_pMainWnd)。CApp负责创建主窗口,初始化OpenGL,维护消息泵和管理屏幕更新。CMainWnd封装了主窗口及其OpenGL渲染上下文。
CApp通过调用CMainWnd::InitScene()、CMainWnd::KillScene()和CMainWnd::DrawScene()来通知CMainWndOpenGLRC生命周期的不同阶段。CMainWnd::Tick()由CApp调用,每次窗口消息队列为空时都会调用。
这可能不是最优雅的面向对象解决方案;CApp中的一些代码实际上应该在CMainWnd中,比如窗口创建和(部分)消息处理。但目的是让CApp处理Win32API和OpenGL设置的繁琐工作,让CMainWnd专注于客户区域显示的内容。
选择创建新项目,从项目类型列表中选择"OpenGLWin32应用程序",输入项目名称并按OK。以下是可用于自定义项目的选项:
在VC++.NET中,应用程序生成器不再是编译的插件,而是一系列脚本和模板文件,具有基于HTML的用户界面。请参阅Readme.txt了解安装说明。
利用这个机会改变了对象模型,使之更加清晰。现在有一个抽象基类CApp,负责窗口创建、OpenGL初始化等。生成的应用程序的"核心"位于一个派生类中,该类覆盖了CApp的多个虚函数。例如,InitScene()、DrawScene()和KillScene()是虚函数。
除此之外,VC++.NET版本的应用程序生成器基本上与VC++6版本的行为相同。