- 1、本文档共76页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第05课 OpenGL程序框架 张 志 华 兰州交通大学数理学院 OpenGL程序框架 现在就让我们直接从代码开始吧。第一件事是打开VC然后创建一个新工程。如果您不知道如何创建的话,也许不该学习OpenGL,而应该先学学VC。某些版本的VC需要将 bool 改成 BOOL , true 改成 TRUE , false 改成 FALSE ,请自行修改。 在您创建一个新的Win32程序(不是console控制台程序)后,还需要链接OpenGL库文件。在VC中操作如下:Project- Settings,然后单击LINK标签。在Object/Library Modules选项中的开始处(在 kernel32.lib 前)增加 OpenGL32.lib GLu32.lib 和 GLaux.lib 后单击OK按钮。现在可以开始写您的OpenGL程序了。 代码的前4行包括了我们使用的每个库文件的头文件。如下所示: OpenGL程序框架 #include windows.h // Windows的头文件 #include glew.h // 包含最新的gl.h,glu.h库 #include glut.h // 包含OpenGL实用库 OpenGL程序框架 接下来需要设置程序中使用的所有变量。本节中的例程将创建一个空的OpenGL窗口,因此我们暂时还无需设置大堆的变量。余下需要设置的变量不多,但十分重要。您将会在您以后所写的每一个OpenGL程序中用到它们。 第一行设置的变量是Rendering Context(着色描述表)。每一个OpenGL都被连接到一个着色描述表上。着色描述表将所有的OpenGL调用命令连接到Device Context(设备描述表)上。我将OpenGL的着色描述表定义为 hRC 。要让程序能够绘制窗口的话,还需要创建一个设备描述表,也就是第二行的内容。Windows的设备描述表被定义为 hDC。DC将窗口连接到GDI(Graphics Device Interface图形设备接口)。而RC将OpenGL连接到DC。第三行的变量 hWnd 将保存由Windows给我们的窗口指派的句柄。最后,第四行为我们的程序创建了一个Instance(实例)。 OpenGL程序框架 HGLRC hRC=NULL; // 窗口着色描述表句柄 HDC hDC=NULL; // OpenGL渲染描述表句柄 HWND hWnd=NULL; // 保存我们的窗口句柄 HINSTANCE hInstance; // 保存程序的实例 OpenGL程序框架 下面的第一行设置一个用来监控键盘动作的数组。有许多方法可以监控键盘的动作,但这里的方法很可靠,并且可以处理多个键同时按下的情况。 active 变量用来告知程序窗口是否处于最小化的状态。如果窗口已经最小化的话,我们可以做从暂停代码执行到退出程序的任何事情。 fullscreen 变量的作用相当明显。如果我们的程序在全屏状态下运行, fullscreen 的值为TRUE,否则为FALSE。这个全局变量的设置十分重要,它让每个过程都知道程序是否运行在全屏状态下。 OpenGL程序框架 bool keys[256]; // 保存键盘按键的数组 bool active=TRUE; // 窗口的活动标志,缺省为TRUE bool fullscreen=TRUE; // 全屏标志缺省,缺省设定成全屏模式 OpenGL程序框架 现在我们需要先定义WndProc()。必须这么做的原因是CreateGLWindow()有对WndProc()的引用,但WndProc()在CreateGLWindow()之后才出现。在C语言中,如果我们想要访问一个当前程序段之后的过程和程序段的话,必须在程序开始处先申明所要访问的程序段。所以下面的一行代码先行定义了WndProc(),使得CreateGLWindow()能够引用WndProc()。 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // WndProc的定义 OpenGL程序框架 下面的代码的作用是重新设置OpenGL场景的大小,而不管窗口的大小是否已经改变(假定没有使用全屏模式)。甚至无法改变窗口的大小时(例如在全屏模式下),它至少仍将运行一次--在程序开始时设置我们的透视图。OpenGL场景的尺寸将被设置成它显示时所在窗口的大小。 GLvoid ReSizeGLScene(GLsizei width, GLsizei height) // 重置OpenGL窗口大小 { if (height==0) // 防止被零除 {
您可能关注的文档
最近下载
- 幼儿园木工课程.pptx VIP
- 风力发电项目PC施工总包合同.pdf VIP
- 2017年山东省青岛市城阳七年级英语下册 Unit 1-2 复习练习题(无答案)(新版)人教新目标版.doc VIP
- 禽类屠宰与分割车间设计规范sbj15-2022.docx VIP
- 浙大二院急诊科进修汇报.pptx VIP
- 全国计算机等级考试二级 MS Office高级应用ppt全套教学课件完整版电子教案.docx VIP
- 中国重症心血管疾病患者临床营养评估和管理专家共识解读PPT课件.pptx VIP
- 中国重症心血管疾病患者临床营养评估和管理专家共识解读PPT课件.pptx VIP
- 瑞普德R8060M,R8080M用户手册调试参数设置资料.pdf
- 输变电工程标准工艺(变电工程土建分册)2022版.pdf VIP
文档评论(0)