资源描述:
《手把手教你搭建用MFC进行OpenGL编程的框架》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、手把手教你搭建用MFC进行OpenGL编程的框架第一步:创建项目文件File
2、
3、New
4、
5、Project
6、
7、MFCAppWizard(exe)
8、
9、输入ProjectName
10、
11、创建一个基于SDI,View类基于CView的工程文件;第二步:向项目文件中添加OpenGL的绘图函数Project
12、
13、Settings
14、
15、在Object/librarymodules:中输入opengl32.lib,glu32.lib,glaux.lib,三者之间用空格隔开,逗号不用输入;第三步:添加一些代码1)在项目工作区的F
16、ileView中找到StdAfx.h,添加下面的代码:#include#include#include2)在项目工作区的ClassView中找到CView类,右击CView类,选择AddMemberVairable,添加一个成员变量HGLRCm_hRC;选择AddMemberFounction,添加一个成员函数voidDrawScene();3)在项目工作区的ClassView中找到CView类,右击CView类,选择AddWindowsMe
17、ssageHandler,为CView类添加WM_CREATE,WM_DESTORY(方法:在左边的Newwindowsmessage/events中选中并双击,然后点击OK)。在项目工作区的ClassView中找到CView类,找到函数OnCreate(),在该函数中添加如下代码://定义像素存储格式PIXELFORMATDESCRIPTORpfd={sizeof(PIXELFORMATDESCRIPTOR),1,PFD_DRAW_TO_WINDOW
18、PFD_SUPPORT_OPENGL,PFD_TY
19、PE_RGBA,24,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,PFD_MAIN_PLANE,0,0,0,0,};CClientDCdc(this);intpixelFormat=ChoosePixelFormat(dc.m_hDC,&pfd);BOOLsuccess=SetPixelFormat(dc.m_hDC,pixelFormat,&pfd);m_hRC=wglCreateContext(dc.m_hDC);同理找到函数OnDestory(),在该函数中添加下面的代码:w
20、glDeleteContext(m_hRC);4)在类CView中的函数PreCreateWindows()中添加下面的代码:cs.style
21、=(WS_CLIPSIBLINGS
22、WS_CLIPCHILDREN);5)在类CView中的函数OnDraw()中添加下面的代码:wglMakeCurrent(pDC->m_hDC,m_hRC);DrawScene();//用户自定义的场景绘制函数wglMakeCurrent(pDC->m_hDC,NULL);这样,一个基于OpenGl标准的程序框架已经构造好了
23、,用户只需在DrawScene()函数中添加程序代码即可。为了验证程序框架的是否正确,请在DrawScene()函数中添加下面的代码:glBegin(GL_TRIANGLE_STRIP);glColor3f(1.0,0.0,0.0);glVertex3f(0.0,0.0,0.0);glColor3f(0.0,1.0,0.0);glVertex3f(-0.5,0.0,0.0);glColor3f(0.0,0.0,1.0);glVertex3f(0.0,0.5,0.0);glEnd();glFlush();
24、然后编译执行直至在MFC窗口中绘制出了一个顶点颜色不同的三角形即可。//MeshView.cpp:implementationoftheCMeshViewclass//#include"stdafx.h"#include"Mesh.h"#include"MeshDoc.h"#include"MeshView.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//////////////
25、/////////////////////////////////////////////////////////////////CMeshViewIMPLEMENT_DYNCREATE(CMeshView,CView)BEGIN_MESSAGE_MAP(CMeshView,CView)//{{AFX_MSG_MAP(CMeshView)ON_WM_PAINT()ON_WM_DESTROY()ON_WM_SIZE()ON_WM_LBUTTO