在OpenGL ES中批处理多个矩形

时间:2013-04-05 03:53:19

标签: android performance opengl-es

我目前通过迭代四角形条带并分别绘制每个三角形条带来经历非常慢的性能,所以我想将所有矩形批量分成一个单独的绘制调用。

环顾四周,似乎最好的方法是简单地发生重复顶点的开销,并使用GL_TRIANGLES而不是GL_TRIANGLE_STRIP,只需为每个矩形绘制两个单独的三角形。

问题是每个矩形可以有不同的颜色,我需要以编程方式更改任何矩形的颜色。因此,简单地使用一个GL_TRIANGLES调用并不能解决问题。相反,看起来我需要以某种方式使用我的顶点数据索引颜色数据,将颜色与每个矩形相关联。我该怎么做呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用顶点着色。

顶点每个都有多个数据通道,包括位置,颜色,(多个)纹理,法线等等。

我建议interleaving您的顶点直接包含位置和颜色。虽然您可以设置separate array of just colors并按此方式执行(只需确保正确排列颜色与位置)。

(那些教程是面向iPhone的,但OpenGL ES代码在Android上运行良好)