游戏引擎架构 && windows 核心编程
欲想正人,必先正己。
静坐当思己过,闲谈莫论人非。
垂直同步的作用:
为避免画面撕裂,许多渲染引擎会在交换缓冲区之前,等待显示器的垂直区间消隐,即电子枪重归屏幕上角的时间。
高分辨率计时器的时间漂移
多核处理器。
时间同步
使用cpu的时间周期数进行度量
若使用存储绝对值的手动时钟,需要定期将其清0,避免累加至很大的值。可以将时钟按照周期手动循环,time = (time +△t)%period。
为了应付断点,可以锁定增量时间,当增加时间超过预设的上限,将其锁定至目标帧率
If(dt > 1/30.0f) dt = 1/30.0f
人体接口学设备(HID)
弦(chord)一组按键组合,当同事按下的时候,会在游戏中产生一组独特的行为。
手势检测的方法,历史输入缓冲记录。
Debug技巧
游戏内置菜单:切换全局bool设定,调教全局整数及浮点值,调用一些引擎提供的函数,执行任何任务;开启副菜单,使菜单系统按层阶式管理,方便浏览。
AutoProfile实现技巧 page354
Tessellation 镶嵌
把表面分割为一组离散的多边形。
纹素密度及多级渐进纹理
Mipmap,对于每张纹理,建立低分辨率的纹理序列,当中每张图的宽度和高度都是前一张图的一半,图形硬件会按照三角形与摄像机的距离,选择合适的渐进纹理级数,以尝试维持纹素密度接近于1.
Ansi和Unicode
Ansi为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。
函数希望我们传入花出去的字符数,即应该传入_countof 而不是sizeof。
程序字符串的比较采用CompareStringOrdinal,不考虑用户的区域设置,速度快,而用户字符串一般显示在界面上,要考虑用户的区域设置,采用CompareString(Ex)来处理。
导出ansi和unicode dll函数的转换技巧,windows核心 page 29。IsTextUnicode