MFC框架下OpenGL程序的实现步骤
2008-01-08 10:39 636人阅读评论(0) 收藏举报
本文主要介绍如何在MFC框架下编写OpenGL程序。现有的OpenGL参考书多是介绍基于AUX库,或是基于GLUT库的Win32 OpenGL程序。这类程序结构非常简单,主要目的是让读者熟悉OpenGL语言的用法及功能。然而不得不承认,编写可视化程序MFC框架有其独到的优势,本文就是针对这种需求,详细介绍MFC框架下OpenGL程序的实现步骤。
编译器:Microsoft Visual 2003(中文版)
准备工作:下载OpenGL非标准额外GLUT库文件nload/(, , )。将glut./Vc7/PlatformSDK/Include/gl下,glut32./Vc7/PlatformSDK/Lib下,,最后设置编译器的链接:【项目】-【属性页】-【链接器】-【输入】-【附加依赖项】-。
具体实现步骤:
1. 新建MFC多文档应用程序,项目名取为Render。
2. ,并将这两个文件放入项目文件夹内。具体代码见附录。两文件的功能:创建类CWSDView,它继承自CView,成员函数包括设置像素格式,创建渲染描述表,各类鼠标消息相应函数如鼠标左键拖动,右键拖动及滚轴转动等。
3. 【文件】-【添加现有项】,, 。
4. #include "",
将class CRenderView : public CView修改为class CRenderView : public CWSDView
(CRenderView, CView)为IMPLEMENT_DYNCREATE(CRenderView, CWSDView);修改 BEGIN_MESSAGE_MAP(CRenderView, CView)为BEGIN_MESSAGE_MAP(CRenderView, CWSDView)
5. 在CRenderView类中添加虚拟函数virtual void RenderScene(void)。实际上它是继承自父类CWSDView。
6. 在CRenderView::OnDraw(CDC* /*pDC*/)内添加代码:
// TODO: 在此处为本机数据添加绘制代码
//双缓存应用
static BOOL bBusy = FALSE;
if(bBusy) return;
bBusy = TRUE;
//背景色
glClearColor(, , ,);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//清缓存
glMatrixMode(GL_MODELVIEW);//启动模型矩阵
glLoadIdentity();//初始化模型矩阵
// 绘制动作
glTranslatef(, , -); //将场景移至可视区
RenderScene();//绘制场景
glFinish();//完成绘制
SwapBuffers(wglGetCurrentDC());//双缓存应用:更新缓存
bBusy = FALSE;
7. 在CRenderView::RenderScene(void)内添加代码:
glPushMatrix();
//控制操作如下,与鼠标消息相应函数相关:
glTranslatef(m_translateX, m_translateY, );
glRotatef(rotate_x, , , );
glRotatef(rotate_y, , , );
glScalef(m_scale, m_scale, m_scale);
//绘制实体例如茶壶
glPushMatrix();
glColor3f(, , );
glutSolidTeapot();
glPopMatrix();
glPopMatrix()
MFC框架下OpenGL程序的实现步骤 来自淘豆网www.taodocs.com转载请标明出处.