在Android中使用VBO和OpenGL ES的性能不佳

时间:2015-04-30 19:28:19

标签: android performance opengl-es vbo

我正在制作 Android 应用,我需要使用 OpenGL ES 绘制一些形状。我能够呈现它们,但我对表现感到失望。我更新了代码以使用 VBO ,但我没有注意到任何改进。我想以每秒 60帧呈现(每帧 16 ms)。

我有一个测试项目,我在屏幕上渲染了几个三角形。当我渲染 1000 三角形时,每帧需要 20 ms (取决于设备)。

我希望将渲染保持在 10 ms 之下,因为我需要其余的( 6 ms )来执行其他计算(例如更新位置,检测碰撞等)

这是我渲染三角形的代码:

https://github.com/mauriciotogneri/test/blob/master/src/com/testopengl/Polygon.java#L51-66

这是迭代三角形的代码:

https://github.com/mauriciotogneri/test/blob/master/src/com/testopengl/MapRenderer.java#L117-139

(更改 NUMBER_OF_TRIANGLES 的值以显示更多三角形)

根据我的理解,方法 GLES20.glDrawArrays(...)需要花费太多时间,如果我需要每帧调用 1000 次(每个三角一个) )。

是否有其他方法可以渲染多个不占太多的多边形?

注意:

  • 在示例中,所有三角形在屏幕上都有固定的位置,但在实际场景中它们会移动
  • 在示例中,我为每个三角形分配了一个随机颜色,但在实际场景中,每个三角形都有一个固定的颜色

1 个答案:

答案 0 :(得分:0)

将你的位置/颜色/法线放在一个VBO对象中并在一次调用中绘制它们。