c++ - 自定义顶点属性 GLSL

标签 c++ opengl attributes vertex

我想在我的着色器中创建几个 vec4 顶点属性。我已经进行了大量的谷歌搜索,但我似乎无法找到关于我想要做的具体事情的一致信息。

我的目标是将蒙皮移至 GPU,因此我需要每个顶点的骨骼和权重列表,这就是为什么我要使用顶点属性。我有 2 个代表该数据的 float 组。基本上是这样的:

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

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

谢谢。

最佳答案

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

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

关于c++ - 自定义顶点属性 GLSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292094/

相关文章:

c++ - FOR 循环语句中的 IF 语句?

opengl - OpenGL纹理缓冲区对象的目的是什么?

python - 如何在python中为类添加属性

自定义 View 中的 Android 属性

c# - 存在较新版本的先决条件时无法安装

c++ - 无限 "true"while 循环

c++ - 将 time_t 转换为 int64_t

c++ - Qt OpenGL-如何根据鼠标点击获取对象

java - 所有多边形都变成透明的,如何解决?

javascript - jQuery:hasClass 部分匹配