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

标签 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];

当两个数组都使用 glVertexAttribPointer 提交给 OpenGL 并进行渲染时,colors 数组的一个元素被每 3 个连续的 positions 元素重复使用使用单个 glDrawArrays(GL_TRIANGLES, ...);

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

最佳答案

这本质上是 this question about multi-indexed rendering 的另一种形式(这是不同的,这就是为什么我不称它为重复)。简单回答是不。不太简单的答案是自己进行访问和索引。

关于c - OpenGL:每个图元的顶点属性数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11351537/

相关文章:

c - 将结构体作为函数中的参数传递

c - 如何同时包含 for 循环初始声明和 gnu 扩展?

c - 实现 9p 服务器

opengl - 我可以在 GLSL 着色器中使用 if else 吗?

opengl - JOGL 和帧缓冲区渲染到纹理 : Invalid Framebuffer Operation Error 的问题

c++ - 将 OpenGL 应用程序移植到 Windows 时遇到问题

将 uint8_t 转换为 int8_t

c - 有没有办法使这个哈希查找更快?

opengl - 顶点着色器中的变换仅适用于后乘法

c - Opengl 在 3d 场景问题上绘制 2d 叠加