太多的glDrawElements导致低fps? OpenGL ES1.1(iPhone)

时间:2012-08-23 13:54:25

标签: iphone c++ objective-c opengl-es

我正在开发基于2D Tile的游戏并且目前正在努力解决性能问题,因为即使在iPad 3上运行,我的速度也在10-15 FPS左右.OpenGL ES帧捕获显示我每帧调用glDrawElements 689次!那是很多吗?可能是性能低下的情况吗?

我应该将所有内容堆叠在一个巨大的数组中并执行1次绘制调用吗?会有什么不同吗?

1 个答案:

答案 0 :(得分:3)

此时,您目前受限于命令问题(假设),如果您运行opengl性能侦探(它在xcode下(右键单击,打开开发人员工具),您可能需要通过首选项下载它。)< / p>

您的目标是在一天结束时受到填充率的限制,以下是一些帮助您实现目标的提示

按所有精灵排序 画深度 混合模式 纹理ID

一旦排序, 将所有sprite包装到一个顶点缓冲区对象和一个索引缓冲区对象中。

当您的绘制深度,混合模式或纹理ID发生变化时,是时候进行新的绘制调用并绑定这些资源了。

另外请记住,你的精灵应该在cpu侧(pos x mvp)平顶你的顶点,你不应该发送矩阵,任何其他属性,如颜色,应该是顶点的一部分。

典型的顶点

{
    float pos[3]
    int color
    float uv[2]
}