2016-06-02 2 views
-1

Я делаю 2D-игру в libGDX. И это хорошо работать, и выглядеть так: Before Shader waterLibGdx ShaderProgram для разрыва воды мой графический код

Теперь я ищу какой-то воды визуализатора, и я нашел некоторые удивительные вещи: tutorial, и это хорошо работать. Но, когда я последовательно отрисовываю свою игру, то «эффект воды», акт рисования воды буквально нарушает мою графику: After Shader wate Все изменения в блоке с другими, у меня жуткая анимация. И я не могу понять, в чем проблема.

Я выполняю всю свою игру с помощью 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 просто применить «эффект воды» в конце, но не влияет на то, что уже на экране.

Thx!

+0

Я бы предположил, что вы применяете вещи в неправильном порядке или пропустили какой-то шаг, который ограничивает действие какой-либо части в учебнике. Но вам действительно нужно будет показать соответствующий код, чтобы кто-то понял это. – zapl

+0

Я делаю всю свою игру с помощью 'spriteBatch.draw (...);' и для воды: // RENDER WATER \t \t Gdx.gl20.glBlendFunc (GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); \t \t Gdx.gl20.glEnable (GL20.GL_BLEND); \t \t texture2.bind (1); \t \t texture3.bind (2); \t \t shader.begin(); \t \t shader.setUniformMatrix («u_worldView», матрица); \t \t shader.setUniformi ("u_texture", 1); \t \t shader.setUniformi ("u_texture2", 2); \t \t shader.setUniformf ("timedelta", -angle); \t \t waterMesh.render (shader, GL20.GL_TRIANGLE_FAN); \t \t shader.end(); ' – pikameuh

+0

Без" texture2.bind (1); \t \t texture3.bind (2); ', это нормально, когда черная полоса находится в положении воды. Но с этими двумя строками (также с первым только), у меня есть результат, который я загрузил. – pikameuh

ответ

3

SpriteBatch предполагает, что состояние GL оставлено по умолчанию, и в этом случае вы не оставляете активную текстуру как 0 при связывании нескольких текстур, поэтому SpriteBatch не использует правильную текстуру для вашего спрайты.

Звоните Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0); прямо сейчас spriteBatch.begin(), чтобы исправить это.

+0

Thx !!! святой друг! Исправлена ​​! И ваша экспликация понятна. Thx u так много. – pikameuh

 Смежные вопросы

  • Нет связанных вопросов^_^