- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
OpenGL编程实习报告
班级:
学号:
姓名:
专业:摄影测量与遥感
指导老师:
实习目的:
了解OPENGL绘图原理;熟悉OPENGL的编程步骤;掌握在OPENGL中绘图。
实现在VC++6.0环境下在OPENGL中绘图,绘制一个圆形或正方形;实现这个三维物体的变换。
实习原理:
OpenGL的基本工作流程为:
OpenGL程序的基本结构为定义窗口、清理窗口、绘制物体、结束运行。其基本操作有:描述图元、绘制图元、OpenGL变换。
在Windows下用GDI作图必须通过设备上下文(DeviceContext简写DC)调用相应的函数;用OpenGL作图也是类似,OpenGL函数是通过渲染上下文(RenderingContext简写RC)完成三维图形的绘制。Windows下的窗口和设备上下文支持位图格式(PIXELFORMAT)属性,和RC有着位图结构上的一致。只要在创建RC时与一个DC建立联系(RC也只能通过已经建立了位图格式的DC来创建),OpenGL的函数就可以通过RC对应的DC画到相应的显示设备上。
实习步骤:
首先创建工程。用AppWizard产生一个MFC单文档(SDI)的EXE文件。选中三维控制(3DControls),其余保持默认值即可。
将此工程所需的OpenGL文件和库加入到工程中。在工程菜单中,选择Build下的Settings项。单击Link标签,选择General目录,在Object/LibraryModules的编辑框中输入OpenGL32.libglu32.libglaux.lib,选择OK结束。然后打开文件stdafx.h,将语句#includegl\gl.h和#includegl\glu.h插入到文件中。
设置显示设备DC的位图格式(PIXELFORMAT)属性。通过填充一个PIXELFORMATDESCRIPTOR的结构来完成(关于PIXELFORMATDESCRIPTOR中各项数据的意义,请参照VC的帮助信息),该结构决定了OpenGL作图的物理设备的属性,比如该结构中的数据项dwFlags中PFD_DOUBLEBUFFER位如果没有设置(置1),通过该设备的DC上作图的OpenGL命令就不可能使用双缓冲来做动画。有一些位图格式(PIXELFORMAT)是DC支持的,而有一些DC就不支持了。所以程序必须先用ChoosePixelFormat来选择DC所支持的与指定位图格式最接近的位图格式,然后用SetPixelFormat设置DC的位图格式。
利用刚才的设备DC建立渲染上下文RC(wglCreateContext),使得RC与DC建立联系(wglMakeCurrent)。
调用OpenGL函数作图。
(1)定义一个窗口:
auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
auxInitPosition(0,0,500,400);
auxInitWindow(CreateYourOwnProgram);
(2)清理窗口:
glClearColor(0.0,0.0,0.0,0.0);
glClearDepth(0.0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
(3)绘制物体:(包括和构造几何图元)
定义顶点:在OpenGL中,所有的几何物体最终都由有一定顺序的顶点集来描述。
在实际应用中,通常用一组相关的顶点序列以一定的方式组织起来定义某个几何图元,而不采用单独定义多个顶点来构造几何图元。
允许在glBegin()与glEnd()之间调用的OpenGL命令为:
glVertex*();
glColor*();
glIndex();
glNormal();
glEvalCoord*();
glCallList(),glCallLists();
glTexCoord();
glEdgeFlag();
glMaterial();
设置图元的颜色、大小、线段、线型、多边形的绘制和填充
(4)设置变换方式。有几何变换、正射投影等。
(5)结束运行。
6、作图完毕以后,先通过置当前线程的RC为NULL(::wglMakeCurrent(NULL,NULL);),断开当前线程和该渲染上下文的联系,由此断开与DC的联系。在后面删除RC的时候要先判断以下RC句柄的有效性(if(m_hrc)::wglDeleteContext(m_hrc);)。再根据情况释放(ReleaseDC)或者删除(DeleteDC)DC。
实习小结:
原创力文档


文档评论(0)