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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
C OpenGL:每个基本体的顶点属性数组?_C_Opengl - Fatal编程技术网

C OpenGL:每个基本体的顶点属性数组?

C OpenGL:每个基本体的顶点属性数组?,c,opengl,C,Opengl,我想知道在OpenGL中(通过扩展或其他方式)是否有可能由glvertexattributepointer类型函数指定一个属性数组,该函数对每个基本体(或N个顶点)前进一步,而不是对每个顶点前进一步 例如,如果我有一个三角形数组,它当前有一个纯色,我必须为每个顶点重复相同的颜色数据,我想要的是沿着这些线的东西: struct pos { uint8_t x, y; } positions[NUM_VERTICES]; struct col { uint8_t r, g, b;

我想知道在OpenGL中(通过扩展或其他方式)是否有可能由
glvertexattributepointer
类型函数指定一个属性数组,该函数对每个基本体(或N个顶点)前进一步,而不是对每个顶点前进一步

例如,如果我有一个三角形数组,它当前有一个纯色,我必须为每个顶点重复相同的颜色数据,我想要的是沿着这些线的东西:

struct pos {
    uint8_t x, y;
} positions[NUM_VERTICES];

struct col {
    uint8_t r, g, b;
} colors[NUM_VERTICES / 3];
当使用
glvertexattributepointer
将两个数组提交给OpenGL并使用单个
glDrawArrays(GL\u三角形,…)渲染时,
colors
数组中的一个元素被重新用于每3个连续的
位置
元素


我发现了
ARB\u instanced\u数组
扩展,它提供了
glvertexattributedivisiorab
函数,起初似乎很有希望,但我认为它的工作方式与我描述的不一样。

这本质上是另一种形式(它不同,这就是为什么我不称它为副本)。简单的答案是否定的。不那么简单的答案是自己进行访问和索引