LibGdx ShaderProgram for water break 我的图形代码
LibGdx ShaderProgram for water break my graphic code
我正在 libGDX 制作 2D 游戏。
它 运行 很好,看起来像这样:
现在我正在寻找一些水渲染器,我发现了一些令人惊奇的东西:tutorial,运行 很好。
但是,当我依次渲染我的游戏然后 "water effect" 时,画水的行为确实破坏了我的图形:
所有块都与其他块变化,我有令人毛骨悚然的动画。而且我不知道是什么问题..
我用 spriteBatch.draw(...) 渲染我所有的游戏;对于水:
`//RENDER WATER
Gdx.gl20.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
Gdx.gl20.glEnable(GL20.GL_BLEND);
texture2.bind(1); // traitement that break the code
texture3.bind(2);
shader.begin();
shader.setUniformMatrix("u_worldView", matrix);
shader.setUniformi("u_texture", 1);
shader.setUniformi("u_texture2", 2);
shader.setUniformf("timedelta", -angle);
waterMesh.render(shader, GL20.GL_TRIANGLE_FAN);
shader.end();`
事实上,我想知道如何告诉 LibGdx 在末尾简单地应用 "water effect",但不影响屏幕上已有的内容。
谢谢!
SpriteBatch 假设 GL 状态已保留为默认值,在这种情况下,当您绑定多个纹理时,您不会将活动纹理单元保留为 0,因此 SpriteBatch 没有使用正确的纹理你的精灵。
在 spriteBatch.begin()
之前调用 Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0);
来解决这个问题。
我正在 libGDX 制作 2D 游戏。
它 运行 很好,看起来像这样:
现在我正在寻找一些水渲染器,我发现了一些令人惊奇的东西:tutorial,运行 很好。
但是,当我依次渲染我的游戏然后 "water effect" 时,画水的行为确实破坏了我的图形:
我用 spriteBatch.draw(...) 渲染我所有的游戏;对于水:
`//RENDER WATER
Gdx.gl20.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
Gdx.gl20.glEnable(GL20.GL_BLEND);
texture2.bind(1); // traitement that break the code
texture3.bind(2);
shader.begin();
shader.setUniformMatrix("u_worldView", matrix);
shader.setUniformi("u_texture", 1);
shader.setUniformi("u_texture2", 2);
shader.setUniformf("timedelta", -angle);
waterMesh.render(shader, GL20.GL_TRIANGLE_FAN);
shader.end();`
事实上,我想知道如何告诉 LibGdx 在末尾简单地应用 "water effect",但不影响屏幕上已有的内容。
谢谢!
SpriteBatch 假设 GL 状态已保留为默认值,在这种情况下,当您绑定多个纹理时,您不会将活动纹理单元保留为 0,因此 SpriteBatch 没有使用正确的纹理你的精灵。
在 spriteBatch.begin()
之前调用 Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0);
来解决这个问题。