OpenGL 学习笔记(三).pdfVIP

  1. 1、本文档共95页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenGL 学习笔记(三)

【Lesson 21 线,反走样,计时,正投影和简单的声音】 欢迎来到第21课,在这一课里,你将学会直线,反走样,正投影,计时,基本的音效和一个简单的游戏逻辑。希望这 里的东西可以让你高兴。我花了两天的时间写代码,并用了两周的时间写这份HTML文件,希望你能享受我的劳动。 在这课的结尾你将获得一个叫amidar的游戏,你的任务是走完所有的直线。这个程序有了一个基本游戏的一切要素, 关卡,生命值,声音和一个游戏道具。我们从第一课的程序来逐步完整这个程序,按照惯例,我们只介绍改动的部分。 #include windows.h #include stdio.h #include stdarg.h #include gl\gl.h #include gl\glu.h #include gl\glaux.h HDC hDC=NULL; HGLRC hRC=NULL; HWND hWnd=NULL; HINSTANCE hInstance; bool类型的变量,vline保存了组成我们游戏网格垂直方向上的121条线,上下水平各11条。hline保存了水平方向上的 121 条线,用ap来检查A键是否已经按下。 当网格被填满时, filled被设置为TRUE而反之则为FALSE。gameover这个变量的作用显而易见,当他的值为TRUE 时,游 戏结束。anti指出抗锯齿功能是否打开,当设置为TRUE 时,该功能是打开着的。active 和 fullscreen 指出窗口是否被最小化 以及游戏窗口是窗口模式还是全屏模式。 bool keys[256]; bool vline[11][10]; // 保存垂直方向的11根线条中,每根线条中的10段是否被走过 bool hline[10][11]; //保存水平方向的11根线条中,每根线条中的10段是否被走过 bool ap; // A键是否已经按下 bool filled; // 网格是否被填满? bool gameover; // 游戏是否结束? bool anti=TRUE; // 是否启用反走样? bool active=TRUE; bool fullscreen=TRUE; 接着设置整型变量。loop1 和 loop2 被用来检查网格,查看是否有敌人攻击我们,以及在网格上给对象一个随机的位 置。你将看到loop1 / loop2在后面的程序得到使用。delay 是一个计数器,我用他来减慢那些坏蛋的动作。当delay 的值大于 某一个馈值的时候,敌人才可以行动,此时delay将被重置。 adjust是一个非常特殊的变量,即使我们的程序拥有一个定时器,他也仅仅用来检查你的计算机是否运行地太快。如果 是,则需要暂停一下以减慢运行速度。在我地GeForce显卡上,程序的运行平滑地简直变态,并且非常非常快。但是在我的 PIII/450+Voodoo 3500TV上测试的时候,我注意到程序运行地非常缓慢。我发现问题在于关于时间控制那部分代码只能够用 来减慢游戏进行而并不能加速之。因此我引入了一个叫做adjust 的变量。它可以是0到5之间的任何值。游戏中的对象移动速 度的不同依赖于这个变量的值。值越小,运动越平滑;而值越大,则运动速度越快。这是在比较慢的机器上运行这个程序最 简单有效的解决方案了。但是请注意,不管对象移动的速度有多快,游戏的速度都不会比我期望的更快。我们推荐把adjust 值设置为3,这样在大部分机器上都有比较满意的效果。 我们把lives的值设置成5,这样我们的英雄一出场就拥有5条命。level是一个内部变量,用来指出当前游戏的难度。当然, 这并不是你在屏幕上所看到的那个Level。变量level2开始的时候和Level拥有相同的值,但是随着你技能的提高,这个值也会 增加。当你成功通过难度3之后,这个值也将在难度3上停止增加。level 是一个用来表示游戏难度的内部变量,stage才是用 来记录当前游戏关卡的变量。 int loop1; // 通用循环变量

文档评论(0)

zhengshumian + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档