2013-03-04 3 views
0

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

Я пытаюсь проследить строку кода, которая обрабатывает текстуру в шейдерах, есть ли определенная функция, которую 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

Спасибо за советы, я, кажется, добился прогресса: D! – user2131737