OpenGl3及以上两帧之间的线性插值

时间:2014-02-24 19:47:34

标签: c++ opengl glsl

我有两个帧(即由相同数量的顶点组成的两个网格),我正在尝试编写一个顶点着色器,线性插值以将第1帧变形为第2帧。我正在阅读一个教程,其中显示了如何操作这是旧版本的OpenGL。该算法基本上是:

GLBegin
 For each vertex in frame 1
  Send equivalent vertex to uniform variable in vertex shader from frame 2
  Send vertex from frame 1 to vertex shader
  (shader uses mix() to linearly interpolate between the two XYZ values)
GLEnd

但这不是OpenGL3 +中的事情。有人能帮我想一个算法,我仍然可以在顶点着色器中使用mix()来创建两个网格/帧之间的变形吗?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用两组位置属性和一个0和1之间的混合因子的均匀,然后通过GLSL的mix函数使用混合因子在它们之间混合。当你完全达到1.0时,你可以切换回因子0,但现在使用第二个网格作为第一个集合,只需更新顶点属性指针。