【问题标题】:Too many glDrawElements cause for low fps? OpenGL ES1.1 ( iPhone )太多 glDrawElements 导致低 fps? OpenGL ES1.1(iPhone)
【发布时间】:2012-12-31 20:17:17
【问题描述】:

我正在开发一个基于 2D Tile 的游戏,目前正在努力解决性能问题,因为即使在 iPad 3 上运行时我也能达到 10 - 15 FPS。OpenGL ES 帧捕获显示我每帧调用 glDrawElements 689 次!很多吗?会不会是性能低下的情况?

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

【问题讨论】:

  • 哇... 689 glDrawElements,添加所有这些缓冲区绑定和创建开销?

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


【解决方案1】:

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

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

对所有精灵进行排序 绘制深度 混合模式 纹理 ID

排序后, 将所有精灵打包到一个顶点缓冲区对象和一个索引缓冲区对象中。

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

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

典型顶点

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多