我想在着色器中制作几个vec4顶点属性。我已经完成了相当多的谷歌搜索,但我似乎无法找到具体的信息,特别是我想要做的事情。
我的目标是将皮肤移动到GPU,因此我需要每个顶点的骨骼和权重列表,因此我想使用顶点属性。我有2个代表这些数据的浮点数组。基本上这个:
weightsBuffer = new float[vSize*4];
indexesBuffer = new int[vSize*4];
我无法一致找到的部分是如何上传这些内容并在着色器中使用它们。要清楚,我不想上传所有位置,法线和纹理坐标数据,我已经使用了显示列表,并决定继续使用它们,原因有几个并非相关。如何创建缓冲区并正确绑定它们以便我可以使用它们?
感谢。
答案 0 :(得分:3)
绑定骨骼权重和索引与绑定位置数据的过程没有区别。假设数据在缓冲区中正确生成,您可以使用glBindAttribLocation将顶点流中的属性索引绑定到着色器变量,并使用glVertexAttribPointer来定义顶点数组(并且不要忘记glEnableVertexAttribArray
)。
具体代码可能会有所不同,具体取决于您是否使用VAO和VBO(或仅使用客户端缓冲区)。如果您需要更具体的答案,则应提供代码和着色器。