我正在使用OpenGL ES为iPhone开发2D游戏,我想使用320x480位图图像作为持久背景.
我的第一个想法是创建一个320x480四边形然后将纹理映射到它上面代表背景.所以...我创建了一个512x512纹理,上面有320x480图像.然后我将其映射到320x480四核.
我每帧都画这个背景,然后在它上面绘制动画精灵.除了绘制所有这些对象(背景+精灵)太慢之外,这种方法很好.
我做了一些测试,发现我的减速是在像素管道中.毫不奇怪,大背景图像是罪魁祸首.为了证明这一点,我删除了背景绘制,其他所有内容都非常快速地呈现.
我正在寻找有关如何保持背景并提高性能的建议.
这里有更多信息:
1)我目前正在模拟器上测试(仍在等待Apple获得许可)
2)背景是压缩到128k的PVR纹理
3)我曾希望有一种方法可以将这个背景缓存到一个颜色缓冲区中但是没有任何运气.这可能是由于我对OpenGL ES缺乏经验,或者它可能是一个不起作用的愚蠢想法:)
4)我意识到整个背景并不总是必须刷新,只是被移动的精灵所绘制的部分.我开始研究用于刷新(根据需要)背景部分的技术,可以是单独的纹理,也可以是剪刀盒,但这似乎不太优雅.
任何提示/建议将不胜感激......
谢谢.
不要在模拟器上进行性能测试.永远!
与真实硬件的差异很大.在两个方向.
如果每帧都绘制背景:
不要清除帧缓冲区.无论如何,背景将透支整个事情.
你真的需要背景纹理吗?
如何通过顶点颜色使用颜色渐变?
尝试使用2位模式的纹理.
完成背景不需要的所有渲染步骤.
例如:照明,混合,深度测试,......
如果您可以发布一些绘图代码,那么帮助您会容易得多.
如果你正在制作2D游戏,你有没有理由不使用现有的图书馆?具体来说,iPhone的cocos2d可能值得你花时间.我无法回答你关于如何解决这个问题的问题,但是我可以说我已经完成了你正在谈论的内容(在顶部有精灵的全屏幕背景)和cocos2d它的工作原理大.(假设60 fps对你来说足够快.)你可能有理由自己做,但如果可以的话,我强烈建议至少用cocos2d做一个快速原型,看看这对你有帮助.(有关iPhone版本的详细信息和来源,请访问:http://code.google.com/p/cocos2d-iphone/)