【发布时间】:2015-04-15 12:38:37
【问题描述】:
在应用程序中,我必须绘制许多不相交的可变长度多边形。多边形之间的颜色不同,但单个多边形中的所有顶点将具有相同的颜色。如何有效地绘制它们?
我首先用相同的颜色绘制所有多边形。这很容易通过glMultiDrawArrays 和颜色统一来实现;例如(使用GL_LINE_LOOP 保持简单):
glUniform4f(shaderColourLocation, red, blue, green, alpha);
glMultiDrawArrays(GL_LINE_LOOP, pFirstIndices, pPolygonSizes, polygonCount);
这适用于我拥有的数据,但我可以看到添加每个多边形颜色的唯一方法是:
- 将其分解为多个
glDrawArrays调用,每次都设置颜色(大量额外的 API 调用); - 缓冲每个顶点的颜色数据(复制大量颜色数据);
- 缓冲多边形索引并使用统一的颜色数组(更复杂,还有一些冗余数据)。
有没有更好的方法来实现每个多边形的颜色,同时仍然使用glMultiDrawArrays 或类似的东西?
【问题讨论】:
-
不要害怕复制颜色数据。