想象一下,你有一个这样的人:
(来源:codesampler.com)
Aka GL_TRIANGLE_STRIP。如果您想使用不同的颜色为它着色,可以使用:
glColorPointer(4, GL_UNSIGNED_BYTE, 0, colorArray);
glEnableClientState(GL_COLOR_ARRAY);
颜色数组中的每个“项”与条带中的顶点匹配。但是如果颜色在两种不同的颜色之间交替怎么办?如果只有两种“真正的”不同颜色,则不必为每个顶点定义颜色。所以我的问题是,是否可以定义一个只有两种颜色的colorArray,并且当它循环遍历顶点数组时,以某种方式使opengl在这两种颜色之间交替。
是的,我在opengl是一个完整的菜鸟,所以也许这是一个愚蠢的问题......
答案 0 :(得分:3)
您可以使用OpenGL Color Index Mode执行此操作。但是,请注意,根据我的经验,这在大多数现代图形卡上实际上比仅指定每个顶点颜色要慢。
在颜色索引模式下,您发送一个单独的颜色数组,然后每个顶点指定数组的索引,而不是完整的rgb / rgba。它的内存效率更高,但在大多数硬件驱动程序中都没有得到优化。
答案 1 :(得分:3)
您可以使用顶点着色器通过为描述颜色的每个顶点发送布尔标志来执行此操作。真正最简单/最快的事情可能就是为每个顶点提交颜色。
如果opengl能够拥有多个可能有效的顶点流和索引(但也可能不值得)。