全文6.6k字, 预计需要22分钟.
1 游戏编程概述
游戏主循环
游戏循环: 整个游戏程序的核心流程控制, 不断执行直到退出
帧: 循环的一次迭代....一般一秒30-60帧, 也就是程序每帧耗时需要在33ms以下
传统的游戏循环: 输入(控制器), 更新世界和逻辑, 输出(画面)
多线程游戏循环: 最简单的方法是让线程做自己的事情, 例如一个线程负责图形以外的计算...游戏可能内含多个时间
增量时间(deltatime): 游戏从上一帧起流逝的时间, 游戏中与速度有关的设计都应该用这个时间来计算....为了优化这个精度问题, 一种方法是将深度取反处理从而让靠近近平面的场景分配到更多的浮点空间, 还有一种方法是对深度按照对数储存, 对数精度能让深度值得到更均匀的分布
光照
Phong光照属于一种简单的BRDF..., 因此需要设置无效区域(死区), 一般通过计算设备返回的2D向量长度来进行过滤, 然后计算死区之外的向量长度与最大值之间的百分比乘上向量方向来得到过滤后的向量结果
输入事件系统
得到输入设备的结果后游戏通常实现一个单例模式的输入管理器来管理各种输入事件