1 / 19
文档名称:

mfc opengl 编程入门.doc

格式:doc   大小:45KB   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

mfc opengl 编程入门.doc

上传人:xzh051230 2019/1/14 文件大小:45 KB

下载得到文件列表

mfc opengl 编程入门.doc

文档介绍

文档介绍:标题:MFC+OpenGL编程入门发信人:qhchen(老道),信区:VR_3D发信站:BBS水木清华站(MonAug917:55:551999)MFC+OpenGL编程入门1998-09-08中国科技大学数学系计算专业老道E-mail:******@OpenGL作图非常方便,故日益流行,但对许多人来说,是在微机上进行的,首先碰到的问题是,如何适应微机环境。这往往是最关键的一步,虽然也是最初级的。下面介绍如何在VC++上进行OpenGL编程。其实相当简单明快,只因国内缺少这方面的资料与例子,致使许多小细节要一个一个地试,耗去大量时间。希望各位有什么心得体会,也公布出来,从而节省每个人都要试试的时间。言归正传,下面以画一条Bezier曲线为例,详细介绍VC++上OpenGL编程的方法。这里实际上也给出了个C++良好封装性编程的范例。文中给出了详细注释,以便给初学者明确的指引。一步一步地按所述去做,你将顺利地画出第一个OpenGL平台上的图形来。(本文例子以VC++)一、|MFCApplicationWizard(EXE)|"Test"|OK*注*:加“”者指要手工敲入的字串二、导入Bezier曲线类的文件。:WorkSpace|ClassView|TestClasses|<右击弹出>NewClass|lass(不用MFC类)|"CBezierCurve"|OK三、编辑好Bezier曲线类的定义与实现。写好下面两个文件:、设置编译环境::#include<GL/>#include<GL/>#include<GL/>,Project|Settings|Link|Object/librarymodule|""|OK五、设置OpenGL工作环境:(下面各个操作,)():|=WS_CLIPSIBLINGS|WS_CLIPCHILDREN|CS_OWNDC;():创建OpenGL的绘图设备。OpenGL绘图的机制是:先用OpenGL的绘图上下文RenderingContext(简称为RC)把图画好,再把所绘结果通过SwapBuffer()函数传给Window的绘图上下文DeviceContext(简记为DC).要注意的是,程序运行过程中,可以有多个DC,但只能有一个RC。因此当一个DC画完图后,要立即释放RC,以便其它的DC也使用。在后面的代码中,将有详细注释。intCTestView::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CView::OnCreate(lpCreateStruct)==-1)return-1;Init();return0;}voidCTestView::Init(){m_pDC=lientDC(this);//创建DCASSERT(m_pDC!=NULL);if(!bSetupPixelFormat())//设定绘图的位图格式,函数下面列出return;m_hRC=wglCreateContext(m_pDC->m_hDC);//创建RCwglMakeCurrent(m_pDC->m_hDC,m_hRC);//RC与当前DC相关联}//CClient*m_pDC;HGLRCm_hRC;是CTestView的成员变量BOOLCTestView::bSetupPixelFormat(){staticPIXELFORMATDESCRIPTORpfd={sizeof(PIXELFORMATDESCRIPTOR),//sizeofthispfd1,//versionnumberPFD_DRAW_TO_WINDOW|//supportwindowPFD_SUPPORT_OPENGL|//supportOpenGLPFD_DOUBLEBUFFER,//doublebufferedPFD_TYPE_RGBA,//RGBAtype24,//24-bitcolordepth0,0,0,0,0,0,//colorbitsignored0,//noalphabuffer0,//shiftbitignored0,//umulationbuffer0,0,0,0,//accumbitsignored32,/