OpenGL шейдер игнорирует текстуру

Я недавно внедрил Awesomium в приложение OpenGL.
Когда я загружаю Awesomium в текстуру, OpenGL включает его в процесс затенения независимо от того, рисую я текстуру на поверхности или нет.

Я пытаюсь проследить строку кода, которая обрабатывает текстуру, в шейдеры. Существует ли конкретная функция, используемая OpenGL для доступа ко всем текстурам, или способ сказать OpenGL игнорировать текстуру?

Обновить блок текстуры

glBindTexture(GL_TEXTURE_2D, SkypeHUD);
glTexImage2D(GL_TEXTURE_2D, 0, 4, AwesomiumW, AwesomiumH, 0, GL_BGRA, GL_UNSIGNED_BYTE, surface->buffer());

Создать текстурный блок

glBindTexture(GL_TEXTURE_2D, SkypeHUD);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
glBindTexture(GL_TEXTURE_2D, 0);

Рисование сцены без загрузки текстуры: http://puu.sh/2bVTV
Рисование сцены после того, как я загрузил текстуру: http://puu.sh/2bVUb

Вы можете видеть это, смешивая текстуру Google с другими.

0

Решение

Включение / отключение текстуры должно контролироваться кодом шейдера, а не каким-либо состоянием привязки клиента. В любом случае, вы, скорее всего, используете несколько текстурных блоков (glActiveTexture); привязка текстур индивидуальна для каждого юнита, поэтому вам нужно будет выполнить некоторую работу ног и отсоединить текстуры от каждого юнита, если вы хотите пойти по этому пути.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector