Hi,
I am currently working on a shader for a multi-textured RTT. Currently, however, the first sampler2D comes out a greenish color while the second is clear. Any ideas?
vertex shader
varying vec2 TexCoord;
void main(){
//gl_TexCoord[0] = gl_MultiTexCoord0; //NOTE:uncommening does nothing
TexCoord = gl_MultiTexCoord0.st;
gl_Position = ftransform();
}
fragment shader
uniform sampler2D tex0;
uniform sampler2D tex1;
varying vec2 TexCoord;
void main(){
vec4 textel0 = texture2D( tex0, TexCoord );
vec4 textel1 = texture2D( tex1, TexCoord );
vec3 temp = mix( textel0.rgb, textel1.rgb, textel1.a );
gl_FragColor = vec4(temp, textel0.a );
}
bound with
void glslSetValue1i( GLuint program, GLchar *name, GLint value ){
GLint location;
location = glGetUniformLocation( program, name );
if( location == -1 ){
printf("Error:: GLSL >> Error setting %s to %i\n", name, value );
return;
}
glUniform1i( location, value );
}
....
glslSetValue1i( pro, "tex0", 0 );
glslSetValue1i( pro, "tex1", 1 );
edit: the draw code lol
//enable texture0, base
glActiveTexture(GL_TEXTURE0);
glBindTexture( GL_TEXTURE_2D, base->GetID());
//enable texture1, object
glActiveTexture(GL_TEXTURE1);
glBindTexture( GL_TEXTURE_2D, object->GetID());
// set the texture as render target
glDrawBuffer (GL_COLOR_ATTACHMENT0_EXT);
//insure that everythign is being rendered by the shader
glPolygonMode(GL_FRONT,GL_FILL);
glLoadIdentity();
//set up the viewport
glViewport( 0, 0, base->GetWidth(), base->GetHeight() );
glTranslatef( 0.0, 0.0, -1.0 );
glBegin(GL_QUADS);
//glTexCoord2f(0.0, 0.0);
glVertex3f( -1.0, 1.0, 0.0 );
//glTexCoord2f( 1.0, 0.0 );
glVertex3f( 1.0, 1.0, 0.0 );
//glTexCoord2f( 1.0, 1.0 );
glVertex3f( 1.0, -1.0, 0.0 );
//glTexCoord2f( 0.0, 1.0 );
glVertex3f( -1.0, -1.0, 0.0 );
glEnd();
//unbind the texture occupying the second texture unit
glActiveTexture( GL_TEXTURE1 );
glBindTexture( GL_TEXTURE_2D, 0 );
//unbind the texture occupying the first texture unit
glActiveTexture( GL_TEXTURE0 );
glBindTexture( GL_TEXTURE_2D, 0 );
glDrawBuffer(0);
//render back to the standard buffer
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 );
[Edited by - Valeranth on November 8, 2008 6:11:05 PM]