Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL glColorPointer重复颜色?_Opengl_Colors_Fill_Repeat - Fatal编程技术网

OpenGL glColorPointer重复颜色?

OpenGL glColorPointer重复颜色?,opengl,colors,fill,repeat,Opengl,Colors,Fill,Repeat,假设你有一个这样的人: (来源:) 又名三角带。如果要使用不同的颜色对其进行着色,可以使用: glColorPointer(4, GL_UNSIGNED_BYTE, 0, colorArray); glEnableClientState(GL_COLOR_ARRAY); 其中,颜色数组中的每个“项”都与条带中的顶点匹配。但是如果颜色只是在两种不同的颜色之间交替呢?如果只有两种“真实”不同的颜色,则无需为每个顶点定义颜色。所以我的问题是,是否有可能定义一个只有两种颜色的colorArray,并

假设你有一个这样的人:


(来源:)

又名三角带。如果要使用不同的颜色对其进行着色,可以使用:

glColorPointer(4, GL_UNSIGNED_BYTE, 0, colorArray);
glEnableClientState(GL_COLOR_ARRAY);
其中,颜色数组中的每个“项”都与条带中的顶点匹配。但是如果颜色只是在两种不同的颜色之间交替呢?如果只有两种“真实”不同的颜色,则无需为每个顶点定义颜色。所以我的问题是,是否有可能定义一个只有两种颜色的colorArray,并在顶点数组上循环时,以某种方式使opengl在这两种颜色之间交替

是的,我在opengl是一个彻头彻尾的傻瓜,所以这可能是一个愚蠢的问题…

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


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

您可以使用顶点着色器来实现这一点,方法是为每个顶点发送一个布尔标志,描述要使用的颜色。实际上,最简单/最快的事情可能就是提交每个顶点的颜色

如果opengl有能力拥有多个顶点流和索引,那么它们可能会工作(但也可能不值得)