GLSL — две текстуры (не смешанные)

Я работаю с текстурами с GLSL.
Как я могу обрабатывать две текстуры с помощью GLSL?
Один парень рекомендовал мне сделать два samples2D в моем GLSL …
Но как GLSL знает, какие samplers2D следует использовать? (Я не говорю о смешивании текстур …)

Я слышал, что я должен использовать glBindTexture.
Как я могу это сделать? С glBindTexture? У кого-нибудь есть пример этого?

openGL 3.3


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

У меня есть это:

uniform Sampler2D texture1;
uniform Sampler2D texture2;

Мне нужно нарисовать два объекта, используя текстуры, так как же GLSL может знать, должен ли он использовать texture1 или texture2 в соответствии с объектом, который я хочу нарисовать. Это мой вопрос.

0

Решение

Вам необходимо привязать каждую текстуру к другому текстурному блоку, а затем использовать многотекстурные координаты. Это будет выглядеть примерно так (при условии, что у вас уже есть текстуры):

glActiveTexture (GL_TEXTURE0);  // First texture is going into texture unit 0
glBindTexture (GL_TEXTURE_2D, tex0);
glEnable (GL_TEXTURE_2D);

glActiveTexture (GL_TEXTURE1);  // Second texture is going into texture unit 1
glBindTexture (GL_TEXTURE2D, tex1);
glEnable (GL_TEXTURE_2D);

glUseProgram (yourGLSLProgramID);
glUniform1i (sampler1Location, 0); // tell glsl that sampler 1 is sampling the texture in texture unit 0
glUniform1i (sampler2Location, 1); // tell glsl that sampler 2 is sampling the texture in texture unit 1
///... set the rest of your uniforms...

glBegin (GL_QUADS);
glMultiTexCoord2f(GL_TEXTURE0, 0.0, 0.0);
glMultiTexCoord2f(GL_TEXTURE1, 0.0, 0.0);
glVertexCoord2f(0.0, 0.0);

glMultiTexCoord2f(GL_TEXTURE0, 1.0, 0.0);
glMultiTexCoord2f(GL_TEXTURE1, 1.0, 0.0);
glVertexCoord2f(width, 0.0);

glMultiTexCoord2f(GL_TEXTURE0, 1.0, 1.0);
glMultiTexCoord2f(GL_TEXTURE1, 1.0, 1.0);
glVertexCoord2f(width, height);

glMultiTexCoord2f(GL_TEXTURE0, 0.0, 1.0);
glMultiTexCoord2f(GL_TEXTURE1, 0.0, 1.0);
glVertexCoord2f(0.0, height);
glEnd();
2

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

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

По вопросам рекламы [email protected]