Ошибка мульти-текстурирования OpenGL: невозможно получить доступ ко всем текстурам в сэмплерах - PullRequest
0 голосов
/ 13 декабря 2011

Я пытаюсь отправить две текстуры фрагментному шейдеру, но, похоже, это не работает.Только одна текстура может быть доступна из сэмплера в шейдере.

Вот что я делаю в своем коде

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, fbo_texture);
glUniform1i(glGetUniformLocation(p,"fbo_texture"), 0);

glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, tex_back);
glUniform1i(glGetUniformLocation(p,"back"), 1);

render stuff

Однако, если я добавлю glActiveTexture(GL_TEXTURE0); после последней униформы,оно работает.Также, если я укажу GL_TEXTURE1, то GL_TEXTURE0, в таком порядке это тоже хорошо.Чего мне не хватает?

Редактировать *

glActiveTexture(GL_TEXTURE2);
glBindTexture(GL_TEXTURE_2D, fbo_texture);
glUniform1i(glGetUniformLocation(p,"fbo_texture"), 2);

glActiveTexture(GL_TEXTURE3);
glBindTexture(GL_TEXTURE_2D, tex_back);
glUniform1i(glGetUniformLocation(p,"back"), 3);

Работает ... Проблема с GL_TEXTURE0 явно

1 Ответ

0 голосов
/ 13 декабря 2011

Я вижу, что вы назвали одну из своих текстур fbo_texture. Я предполагаю, что это цветное вложение рендеринга в текстуру FBO.

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

...