Opengl es 如何使用opengles渲染水下的2D背景

Opengl es 如何使用opengles渲染水下的2D背景,opengl-es,libgdx,effect,Opengl Es,Libgdx,Effect,我正在用opengles渲染水下的二维背景。如何随时间扭曲纹理?我只知道用罪恶(时间)或罪恶(时间)来实现这一点。但我的glsl很差,我不知道怎么做。我应该随时间改变x,y坐标吗?如何避免重复移动整个纹理? 任何帮助,谢谢。为了实现这一点,您可能会扭曲纹理坐标,但您需要一些参数 例如,您可以使用sin或cos函数(它们之间没有太大差异)通过少量移动X纹理坐标来水平扭曲。因此,例如,插入一个均匀(强度)应与纹理相关,例如。1将变形最大10%。然后想法是设置X=sin(Y)*强度。由于Y在0到1的范

我正在用opengles渲染水下的二维背景。如何随时间扭曲纹理?我只知道用罪恶(时间)或罪恶(时间)来实现这一点。但我的glsl很差,我不知道怎么做。我应该随时间改变x,y坐标吗?如何避免重复移动整个纹理?
任何帮助,谢谢。

为了实现这一点,您可能会扭曲纹理坐标,但您需要一些参数

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


现在你有了3个统一的参数,你应该试着使用它们来获得想要的效果。我希望你能找到它。

找到了!多谢各位。