У меня есть две текстуры: облако и холм, каждая с размером 512 x 512, и я намерен создать вывод gl_FragColor, который будет получать значения пикселей из предыдущих текстур.В этом случае я хочу получить 1-й пиксель в gl_FragColor
из 1-го пикселя в 1-й текстуре, 2-й пиксель в gl_FragColor
из 2-го пикселя во 2-й текстуре, 3-й пиксель в gl_FragColor
из3-й пиксель в 1-й текстуре и так далее.Вот мой код фрагмента шейдера:
uniform sampler2D tex0;
uniform sampler2D tex1;
void main() {
vec4 cloud = texture2D(tex0, gl_TexCoord[0].st);
vec4 hill = texture2D(tex1, gl_TexCoord[0].st);
for (int i=0;i<512;i++) {
for (int j=0;j<512;j++) {
if ( j%2 == 0)
gl_FragColor = cloud;
else
gl_FragColor = hill;
}
}
}
Вот установка блока текстуры:
t1 = loadTexture("pY.raw", 512, 512);
t2 = loadTexture("pZ.raw", 512, 512);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, t2);
glEnable(GL_TEXTURE_2D);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, t1);
glEnable(GL_TEXTURE_2D);
А вот унифицированная настройка: glUseProgram (program);
GLuint t1Location = glGetUniformLocation(program, "tex0");
GLuint t2Location = glGetUniformLocation(program, "tex1");
glUniform1i(t1Location, 0);
glUniform1i(t2Location, 1);
Проблема в том, что для программы выводится только текстура холма, и я не знаю, как это исправить.Любое предложение?