我有两个帧(即由相同数量的顶点组成的两个网格),我正在尝试编写一个顶点着色器,线性插值以将第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()来创建两个网格/帧之间的变形吗?
答案 0 :(得分:0)
最简单的方法是使用两组位置属性和一个0和1之间的混合因子的均匀,然后通过GLSL的mix
函数使用混合因子在它们之间混合。当你完全达到1.0时,你可以切换回因子0,但现在使用第二个网格作为第一个集合,只需更新顶点属性指针。