自定义顶点属性 GLSL

Custom Vertex Attributes GLSL

我想在我的着色器中制作几个 vec4 顶点属性。我已经进行了相当多的谷歌搜索,但我似乎找不到关于我想做的具体事情的一致信息。

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

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

我始终找不到的部分是如何上传这些并在着色器中使用它们。需要明确的是,我不想上传所有位置、法线和纹理坐标数据,我已经在使用显示列表并且出于一些不相关的原因决定继续使用它们。如何创建缓冲区并正确绑定它们以便我可以使用它们?

谢谢。

绑定您的骨骼重量和索引与绑定您的位置数据是一个过程。假设数据在您的缓冲区中正确生成,您使用 glBindAttribLocation to bind the attribute index in your vertex stream to your shader variable, and glVertexAttribPointer 来定义您的顶点数组(并且不要忘记 glEnableVertexAttribArray)。

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