OpenGL ES - перестает работать uv-scroll (GL_REPEAT) при рендеринге второй текстуры - PullRequest
0 голосов
/ 24 октября 2018

Сегодня утром у меня возникла проблема с УФ-прокруткой и GL_REPEAT, когда я начал рендерить (анимирующий) спрайт поверх фоновой текстуры.

Другими словами -w, он отлично работает для ультрафиолетового излученияпрокрутите фон, когда я просто использую фоновую текстуру.Но как только я пытаюсь визуализировать другую текстуру поверх фона, уф-прокрутка перестает работать.

Я внедряю ECS-шаблон и вижу в отладчике Android Studio, что функция обновления UVscrollComponent работаетпросто отлично, но текстура (фон) становится статичной (не движется).Как только я удаляю рисование второй текстуры (спрайт), снова начинает работать УФ-прокрутка.

Фильтр, который я сейчас использую

 GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_GLES30.GL_LINEAR, GLES30.GL_LINEAR);
 GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_GLES30.GL_LINEAR, GLES30.GL_LINEAR);
 GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_WRAP_S, GLES30.GL_REPEAT);
 GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_WRAP_T, GLES30.GL_REPEAT);

В чем может быть проблема?

cincerely

1 Ответ

0 голосов
/ 24 октября 2018

Примечание: представленные фрагменты предназначены для использования с OpenGL ES 2.0.Вы должны перевести их в OpenGL ES 3.0 для использования с вашим Android-приложением.

Похоже, что в вашем коде вы не установили активную текстуру для выполнения операций.

В этом другом вопрос , ответ говорит о том, что вам необходимо предварительно связать текстуру для работы с:

GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[textureIndex]);

Если вы обрабатываете операции с несколькими текстурами, вы должны связать правильную активную текстуру для работы с ней..

Это означает, например, что если ваш шейдер принимает 2 текстуры, вы должны установить обе активные текстуры перед началом работы с ними.

GLES20.GL_TEXTURE0 связывает первую текстуру, используемую в шейдереи GLES20.GL_TEXTURE1 для второго.Стандартные фрагментные и вершинные шейдеры позволяют одновременно использовать до 32 текстур, от GLES20.GL_TEXTURE0 до GLES20.GL_TEXTURE31.

...