如何使用opengles在水下渲染我的2D背景

时间:2014-10-30 12:23:38

标签: opengl-es libgdx effect

我正在使用opengles在水下渲染我的2D背景。我怎样才能随着时间的推移扭曲我的纹理?我只知道用罪(时间)或cos(时间)来实现这一点。但我在glsl中很穷。我不知道怎么做。我随着时间的推移改变了x,y的协调?如何避免反复移动整个纹理? 任何帮助谢谢。

1 个答案:

答案 0 :(得分:1)

您可能会扭曲纹理坐标以实现此目的,但您需要一些参数。

例如,您可以使用sin或cos函数(它们之间没有太大差异)通过将X纹理坐标移动少量来水平扭曲。所以你插入一个统一的(strength),它应该是相对于纹理的,例如.1将扭曲最多10%。然后想法是设置X=sin(Y)*strength。由于Y的范围是0到1,因此您需要添加另一个参数,例如density,以获得“更多波浪”,这应该在20范围内,例如获得一些波浪(更改这个你喜欢测试一个很好的效果)。那么等式变为X=sin(Y*density)*strength。这仍然会产生静态失真图像,但你想要的是随着时间的推移而移动所以你需要一些垂直时间因子delta,它应该随时间变化,范围在.02*PI之间。那么等式是X=sin(Y*density + delta)*strength。在每一帧上,你应该增加delta,如果它更大,那么2*PI只需将它减少2*PI即可获得平滑动画。增加delta by的值将控制效果的速度。

所以现在你有3个统一的参数,你应该尝试使用它们来获得所需的效果。我希望你能找到它。