OpenGL glColorPointer重复颜色?

问题描述 投票:6回答:2

想象一下,你有这些家伙之一:

alt text (来源:codesampler.com

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

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

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

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

opengl colors fill repeat
2个回答
3
投票

你可以使用OpenGL Color Index Mode来做到这一点。但是,请注意,根据我的经验,这在大多数现代图形卡上实际上比仅指定每个顶点颜色要慢。

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


3
投票

您可以使用顶点着色器通过为描述颜色的每个顶点发送布尔标志来执行此操作。真正最简单/最快的事情可能就是为每个顶点提交颜色。

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

© www.soinside.com 2019 - 2024. All rights reserved.