本章信息:
• pc和手机游戏区别
• 为手机游戏优化代码
• 经验之谈:处理游戏固定桢速和不同尺寸适配
• 几何和纹理动画简介
• 使用OpenGL ES 渲染2D画面
OpenGL ES的出现,使得pc端移植到手机端,成为可能和easy的事。
porting面临的问题:
• CPU speed
• GPU speed
• CPU上缺少HW floating pt
• 系统内存的大小和速度
• 存储空间
CPU方面的建议:
少使用浮点数。必要时使用sine查找表。
内存和存储能力:
重点:渲染资源、声音。
使用 压缩。
使用platform相关的native的纹理压缩格式。
资源artwork创建
从渲染性能角度出发,用低端机开发,或者不能 性能机器,不能artwork.
资源角度,可以先只画一套高清的纹理,然后做个工具,针对不同平台来缩放或改变格式。
GPU运算速度,决定了一桢能渲染多少顶点。
基于Graphics Pipeline的优化
直接影响流畅的一桢可渲染的多边形的数量。
知道你的数据类型。
尽量使用小的数据类型,减少memory带宽。如16位或8位的定点数。还有助于减少几何模型的占用的存储空间。
一个顶点用到的数据省几个字节,数以千计的顶点就会节省很多空间,、
减少顶点传输,减少glDrawArrays()/ glDrawElements()调用。增加该方法绘制的顶点数从而减少调用次数,比减少顶点数而调用次数增加,执行速度快很多。
VBO的使用。
只画你所看到的。
不同远近,对于一个物体来说,使用不同面的模型:设计师做几套或用工具导出。
一般三种:特写镜头用的高清、中等距离、很远距离。
虽然OpenGL ES会不画屏幕以外的,但传输到OpenGL ES本身就损耗性能,所以在屏幕外时,就不要去传送它到OpenGL ES.
一些排除不可见物体的算法:
group法。
适用第一视角的BSP算法。
用于野外环境的四叉树、八叉树。
理清渲染状态,减少渲染状态的改变次数,如改变textureID。
以4辆摩托车渲染为例,优化后,改变渲染状态的次数,从36,骤减至12 !。
拼大图,也能减少texture改变的次数。
以固定桢速运行
一般是控制在30fps,即一桢耗时33ms左右。
快的时候,等待。
慢的时候,引入frame_speed的概念,logic x frame_speed,以保持游戏运行速度一致。
几何和纹理动画
几何动画:mesh morphing和skeletal animation。
纹理动画:使用一张拼起来的大图,变换坐标即可。