c++ - 如何使用VBO进行变形?

标签 c++ opengl animation vbo morphing

我想要一个可以动画化的网格。我正在从文件加载网格,包括关键帧。我想将所有帧放入 VBO 中,并在 GPU 上的顶点着色器中组合其中两个帧。所以我想将帧传递给 GPU 和一些制服,以便从这两个帧创建一个结果帧

这可能吗?如果可以,我该怎么做?

最佳答案

您将拥有更多顶点属性。通常,您可能会:

in vec3 position;
in vec3 normal;
in vec4 color;
in vec2 texCoord;

对于变形目标,您需要:

in vec3 position0;
in vec3 position1;
in vec3 normal0;
in vec3 normal1;
in vec4 color;
in vec2 texCoord;

实际的模型空间位置将是position0position1之间的线性插值。正常情况也是如此(我猜)。一旦获得它们,您就可以将它们传递给通常的转换。颜色和纹理坐标大概不会改变,但如果改变了,那么它们也需要有 01 版本。

实际渲染非常简单。据推测,您将在同一缓冲区中拥有变形目标的所有位置。因此,只需将 position0 的属性绑定(bind)到第一个变形目标,将 position1 的属性绑定(bind)到第二个变形目标。法线也是如此。然后你就可以正常渲染了。

关于c++ - 如何使用VBO进行变形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7565007/

相关文章:

C++ 11/14 - 是否有用于在别处管理的资源的原始指针包装器?

c++ - 用于数组数组的 opengl glUniform (ARB_arrays_of_arrays)

javascript - 清除整个 Canvas 比清除部分更快?

c++ - 是否可以将任何原始类型传递给需要指针的函数?

c++ - C++ 中 const 声明的区别

opengl - 使用 GLSL 帧缓冲区渲染时出错

c# - 拖放项目以构建图表

javascript - 在 jQuery 中防止双重动画

ios - 在 iOS 中播放准备好的动画

c++ - 如何使用 TBB 多线程 "tail call"递归