MFC框架下OpenGL程序的实现步骤.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC框架下OpenGL程序的实现步骤

MFC框架下OpenGL程序的实现步骤 2008-01-08 10:39 636人阅读 评论(0) 收藏 举报 ???本文主要介绍如何在MFC框架下编写OpenGL程序。现有的OpenGL参考书多是介绍基于AUX库,或是基于GLUT库的Win32 OpenGL程序。这类程序结构非常简单,主要目的是让读者熟悉OpenGL语言的用法及功能。然而不得不承认,编写可视化程序MFC框架有其独到的优势,本文就是针对这种需求,详细介绍MFC框架下OpenGL程序的实现步骤。 编译器:Microsoft Visual Studio.NET 2003(中文版) 准备工作:下载OpenGL非标准额外GLUT库文件/download/download.htm(包括glut.h, glut32.lib, glut32.dll)。将glut.h放到目录VC2003.NET/Vc7/PlatformSDK/Include/gl下,glut32.lib放到目录VC2003.NET/Vc7/PlatformSDK/Lib下,再将glut32.dll放进WINDOWS/system32中,最后设置编译器的链接:【项目】-【属性页】-【链接器】-【输入】-【附加依赖项】-glut32.lib。 具体实现步骤: 1.?????? 新建MFC多文档应用程序,项目名取为Render。 2.?????? 新建两个文件WSDView.h和WSDView.cpp,并将这两个文件放入项目文件夹内。具体代码见附录。两文件的功能:创建类CWSDView,它继承自CView,成员函数包括设置像素格式,创建渲染描述表,各类鼠标消息相应函数如鼠标左键拖动,右键拖动及滚轴转动等。 3.?????? 【文件】-【添加现有项】,选取WSDView.h, WSDView.cpp文件。 4.?????? 在RenderView.h文件中添加代码 #include WSDView.h, 将class CRenderView : public CView修改为class CRenderView : public CWSDView 在RenderView.cpp文件中修改IMPLEMENT_DYNCREATE(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(0.0f, 0.0f, 0.0f,1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//清缓存 glMatrixMode(GL_MODELVIEW);//启动模型矩阵 glLoadIdentity();//初始化模型矩阵 // 绘制动作 glTranslatef(0.0, 0.0, -8.0); //将场景移至可视区 RenderScene();//绘制场景 glFinish();//完成绘制 SwapBuffers(wglGetCurrentDC());//双缓存应用:更新缓存 bBusy = FALSE; 7.?????? 在CRenderView::RenderScene(void)内添加代码: ?????? glPushMatrix(); //控制操作如下,与鼠标消息相应函数相关: glTranslatef(m_translateX, m_translateY, 0.0); glRotatef(rotate_x, 1.0, 0.0, 0.0); glRotatef(rotate_y, 0.0, 1.0, 0.0); glScalef(m_scale, m_scale, m_scale); //绘制实体 例如茶壶 glPushMatrix(); glColor3f(0.5, 0.5, 0.5); glutSolidTeapot(0.3); glPopMatr

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档