自定义顶点属性GLSL

时间:2015-05-17 20:59:58

标签: c++ opengl attributes vertex

我想在着色器中制作几个vec4顶点属性。我已经完成了相当多的谷歌搜索,但我似乎无法找到具体的信息,特别是我想要做的事情。

我的目标是将皮肤移动到GPU,因此我需要每个顶点的骨骼和权重列表,因此我想使用顶点属性。我有2个代表这些数据的浮点数组。基本上这个:

    weightsBuffer = new float[vSize*4];
    indexesBuffer = new int[vSize*4];

我无法一致找到的部分是如何上传这些内容并在着色器中使用它们。要清楚,我不想上传所有位置,法线和纹理坐标数据,我已经使用了显示列表,并决定继续使用它们,原因有几个并非相关。如何创建缓冲区并正确绑定它们以便我可以使用它们?

感谢。

1 个答案:

答案 0 :(得分:3)

绑定骨骼权重和索引与绑定位置数据的过程没有区别。假设数据在缓冲区中正确生成,您可以使用glBindAttribLocation将顶点流中的属性索引绑定到着色器变量,并使用glVertexAttribPointer来定义顶点数组(并且不要忘记glEnableVertexAttribArray)。

具体代码可能会有所不同,具体取决于您是否使用VAO和VBO(或仅使用客户端缓冲区)。如果您需要更具体的答案,则应提供代码和着色器。