如何在OpenGL中将值传递给顶点着色器的属性数组?

Nei*_*l G 3 opengl glsl

在我的顶点着色器中

in float data[6];
Run Code Online (Sandbox Code Playgroud)

这意味着,如果我有100个顶点,则要传递600个浮点数。 glVertexAttribPointer仅支持最大为4的尺寸。如果我使用1,那么它将自动拾取6个元素吗?

BDL*_*BDL 5

glsl中的属性数组被视为具有连续属性位置的许多独立属性。您必须分别为每个顶点设置顶点属性指针。

如果使用来查询第一个元素的位置idx = glGetAttribLocation(program_index, "data")data[1]则将具有location idx + 1。然后,您可以遍历它们,glVertexAttribPointer*并为每个数组元素使用索引和正确的字节偏移量进行调用。