我想要一个可以动画的网格。我正在从文件加载网格,包括关键帧。我想将所有帧放入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;
实际的模型空间位置将是
position0
和position1
之间的线性插值。正常情况也是如此(我想)。一旦获得它们,就可以通过常规转换来传递它们。颜色和纹理坐标大概不会发生变化,但是如果它们发生了变化,那么它们也需要具有0
和1
版本。实际的渲染非常简单。大概,您将把变体目标的所有位置都放在同一缓冲区中。因此,可以将
position0
的属性绑定(bind)到第一个变形目标,并将position1
的属性绑定(bind)到第二个变形目标。法线也一样。然后,您将渲染正常。关于c++ - 如何使用VBO进行变形?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7565007/