如何使用VBO进行变形?

时间:2011-09-27 06:22:30

标签: c++ opengl animation vbo morphing

我想要一个可以动画的网格物体。我正在从一个文件加载网格,包括关键帧。我想将所有帧放入VBO中,并在顶点着色器中在GPU上组合其中两个。所以我想将帧传递给GPU和一些统一,这将允许从这两个

创建一个结果帧

有可能吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:3)

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

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的属性绑定到第一个变形目标,将position1的属性绑定到第二个变形目标的问题。法线也是如此。然后你正常渲染。