I'm looking for a way to access OpenGL states from a shader. The GLSL Quick Reference Guide, an awesome resource, couldn't really help me out on this one.
In the example I'm working on I have the two following shaders:
Vertex:
void main()
{
gl_FrontColor = gl_Color;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = ftransform();
}
Fragment:
uniform sampler2D tex;
uniform float flattening;
void main( void )
{
vec4 texel;
texel = texture2D(tex, gl_TexCoord[0].st);
texel.r *= gl_Color.r;
texel.g *= gl_Color.g;
texel.b *= gl_Color.b;
texel.a *= gl_Color.a;
gl_FragColor = texel;
}
When I'm rendering polygons that are not textured, their alpha values are correct, but they're assigned the color black.
1, What conditional check can I setup so that the variable 'texel' will be set a vec4(1.0, 1.0, 1.0, 1.0)
rather than sampling from a texture when GL_TEXTURE_2D
is disabled?
2, Would the processing be faster if I wrote different shaders for different texturing modes and switch between them where I would use glEnable
/glDisable
(GL_TEXTURE_2D
)?