7

想象一下,你有这些人之一:

替代文字
(来源:codesampler.com

又名 GL_TRIANGLE_STRIP。如果你想用不同的颜色给它上色,你可以使用:

glColorPointer(4, GL_UNSIGNED_BYTE, 0, colorArray);
glEnableClientState(GL_COLOR_ARRAY);

颜色数组中的每个“项目”与条带中的一个顶点匹配。但是如果颜色只是在两种不同颜色之间交替呢?如果只有两种“真实”不同的颜色,感觉没有必要为每个顶点定义颜色。所以我的问题是,是否可以定义一个只有两种颜色的 colorArray,并且当它在顶点数组上循环时,以某种方式让 opengl 在这两种颜色之间交替。

是的,我是opengl的菜鸟,所以也许这是一个愚蠢的问题......

4

2 回答 2

4

您可以通过使用OpenGL 颜色索引模式来做到这一点。但是,请注意,根据我的经验,在大多数现代显卡上,这实际上比仅指定每个顶点颜色要慢。

在颜色索引模式下,您发送一个单独的颜色数组,然后每个顶点指定一个数组索引,而不是完整的 rgb/rgba。它的内存效率更高,但没有在大多数硬件驱动程序中进行优化。

于 2009-08-21T18:32:20.880 回答
3

您可以使用顶点着色器来执行此操作,方法是为每个顶点发送一个布尔标志来描述要成为什么颜色。真正最简单/最快的事情可能只是提交每个顶点的颜色。

如果 opengl 有能力拥有多个可能工作的顶点流和索引(但也可能不值得)。

于 2009-08-21T18:43:01.750 回答