《游戏编程入门》学习笔记6——帧率控制、用文本显示调试信息

来源:互联网 发布:阿里云配置多个网站 编辑:程序博客网 时间:2024/05/19 17:52
        前面提到如何控制速度的问题,今天猪哥仔细把整本教程翻了个遍,发现作者有点坑爹。事实是这样的,作者在第二章偶尔提了一下这个问题,然后说下一章会详谈,但是到第三章就压根给忘了,直至整本书都再没提过…
        所幸,最后一章那个综合性大程序的代码里,有涉及到帧速控制,猪哥给找了出来。

        原理很简单, 就是弄个delay值,加上计数基值,在每次gamerun()开始时,提取timeGetTime()函数的计数值,与前一保存的时间点进行比较,只有经历足够长的时间间隔,才进行一次按键判断、变量计算及画面刷新等过程。windows提供的时间提取函数大概是按毫秒算的,所以比如要让帧率为50,就设置delay等于19就行了。以后有空去查下timeGetTime()以及GetTickCount()的准确介绍。
        额外讲下性能方面的事,现在CPU的工作频率都在GHz级,也就是一秒十亿次,可以想象我们这种小游戏一个Gamerun()里的指令数量怎么都不会超过一万条吧,就是说一秒循环10万次都绰绰有余,我观察了下最后那个射击游戏的每秒循环次数,约在1000次,为什么少了很多呢?因为windows操作系统每秒分给这个游戏的时间片只有约10ms的缘故吧。意思是只考虑速度的话系统同时开一百个这种游戏是一点问题都没有的。而为了让画面稳定,帧率只要达到几十帧就行,所以,我们不用太关心每次循环的精确时间,只要知道快到足够满足我们的需要,然后用前面讲的方法来控制每秒显示多少次就行了。

        此外猪哥发现,反复的设置各种delay值然后再观察动画效果极不方便,用一个内置变量delay加上按键调控来调试,就方便很多。于是之前认为不会用到的文本打印就很有必要了解了。打印文本也不难,几个函数抄来就用。微软就是这个特点,什么工具都给你搞得很傻瓜型,用起来好用,但就是不告诉你内部机制,所以又总觉得不踏实,如此建立起的windows帝国,给人带来便利的同时又限制了其自由。想必只要是帝国终究都会有崩塌的一天吧。

        解决了两个小问题之后,接下来继续思考如何实现小人走路。想了下,暂时先简化为滑步平移,动画方面的事放到最后和美工一起做。
原创粉丝点击