0

我在这个Apple 文档中读到(在标题“避免在属性数组中存储常量”下)它说如果模型的顶点都具有相同的颜色,那么颜色不应该是顶点属性。“OpenGL ES 2.0 应用程序可以设置一个常量顶点属性……”是什么意思?

我的问题是,使用统一的颜色值是否更好,并且调用对每个对象都有统一的调用和绘制调用?或者无论如何都要有顶点属性,但是一举画出所有东西。(或者,如果这样更好,则为常量顶点属性)。

基本上,一次绘制所有内容的优势仅仅是缺少多个函数调用的开销吗?

只是为了了解一下,假设我每帧画了 1000 个圆圈,每个圆圈都有不同的颜色,有 40 个顶点。在那种情况下哪个会更好?

4

1 回答 1

3

答案取决于您在一次绘制调用中绘制了多少东西。如果您有一个包含 30,000 个顶点的对象,并且所有顶点都具有相同的颜色,那么您将浪费大量的每个顶点读取(假设颜色数据使您的每个顶点数据更大。它可能不会)。但是,如果您正在谈论四边形渲染,其中每个四边形都有不同的颜色,那么统一的更新开销和多次绘制调用会影响您的性能。

请注意,在 OpenGL 下有一些实例化方法,它允许您拥有每个实例的数据以及每个顶点的数据。但这通常不会买太多,除非您有数千个实例,并且模型中有超过 100 个顶点。

对于您的具体示例,无法知道哪个更快。您必须对其进行基准测试。

于 2011-09-27T21:40:43.603 回答