我正在使用opengles在水下渲染我的2D背景。我怎样才能随着时间的推移扭曲我的纹理?我只知道用罪(时间)或cos(时间)来实现这一点。但我在glsl中很穷。我不知道怎么做。我随着时间的推移改变了x,y的协调?如何避免反复移动整个纹理? 任何帮助谢谢。
答案 0 :(得分:1)
您可能会扭曲纹理坐标以实现此目的,但您需要一些参数。
例如,您可以使用sin或cos函数(它们之间没有太大差异)通过将X
纹理坐标移动少量来水平扭曲。所以你插入一个统一的(strength
),它应该是相对于纹理的,例如.1
将扭曲最多10%。然后想法是设置X=sin(Y)*strength
。由于Y
的范围是0到1,因此您需要添加另一个参数,例如density
,以获得“更多波浪”,这应该在20范围内,例如获得一些波浪(更改这个你喜欢测试一个很好的效果)。那么等式变为X=sin(Y*density)*strength
。这仍然会产生静态失真图像,但你想要的是随着时间的推移而移动所以你需要一些垂直时间因子delta
,它应该随时间变化,范围在.0
和2*PI
之间。那么等式是X=sin(Y*density + delta)*strength
。在每一帧上,你应该增加delta
,如果它更大,那么2*PI
只需将它减少2*PI
即可获得平滑动画。增加delta
by的值将控制效果的速度。
所以现在你有3个统一的参数,你应该尝试使用它们来获得所需的效果。我希望你能找到它。