OpenGL:每个图元的顶点属性数组?

Xen*_*eno 5 c opengl

我想知道在 OpenGL 中(通过扩展或其他方式)是否有可能有一个由glVertexAttribPointer类型函数指定的属性数组,它为每个基元(或 N 个顶点)前进一个而不是每个顶点一个?

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

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

struct col {
    uint8_t r, g, b;
} colors[NUM_VERTICES / 3];
Run Code Online (Sandbox Code Playgroud)

其中的一个元件colors阵列被用于每3个连续的重复使用positions时两个阵列被提交给OpenGL的与元件glVertexAttribPointer和呈示具有单个glDrawArrays(GL_TRIANGLES, ...);

我找到了ARB_instanced_arrays扩展,它提供了glVertexAttribDivisorARB起初看起来很有希望的功能,但我认为它不像我描述的那样工作。

Nic*_*las 4

这本质上是关于多索引渲染的问题的另一种形式(它是不同的,这就是为什么我不称其为重复项)。简单回答是不。不太简单的答案是自己进行访问和索引。