OpenGL glColorPointer 重复颜色?

7
想象一下,您手头有这样一个东西:

alt text
(来源:codesampler.com)

也称为GL_TRIANGLE_STRIP。如果您想使用不同的颜色对其进行着色,可以使用以下代码:
glColorPointer(4, GL_UNSIGNED_BYTE, 0, colorArray);
glEnableClientState(GL_COLOR_ARRAY);

颜色数组中的每个“item”与带状物中的顶点点匹配。但是,如果颜色仅在两种不同颜色之间交替变化,为每个顶点定义一种颜色似乎是不必要的。因此,我的问题是是否可以仅使用两种颜色定义colorArray,并在循环顶点数组时使opengl在这两种颜色之间交替。

是的,我对opengl完全不了解,所以也许这是一个愚蠢的问题...

2个回答

4
您可以使用OpenGL颜色索引模式来实现。但是请注意,根据我的经验,在大多数现代显卡上,这实际上比直接指定每个顶点的颜色更慢。
在颜色索引模式中,您需要发送一个单独的颜色数组,然后每个顶点指定一个数组索引,而不是完整的rgb/rgba颜色。这样可以节省内存,但在大多数硬件驱动程序中并不是最优化的。

3

您可以使用顶点着色器来实现此操作,通过为每个顶点发送一个布尔标记来描述应该是什么颜色。但实际上最简单/最快的方法可能只是为每个顶点提交颜色。

如果OpenGL具有多个顶点流和索引的能力,那么这种方法可能可行(但也可能不值得)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接