using this fragment shader results in no geometry being drawn. if i remove one of the two nested if-statements, it works… can someone tell me what’s wrong?
shader code:
varying vec2 v_Coordinates;
uniform bool u_Wireframe;
uniform bool u_UseTexture0;
uniform sampler2D u_Texture0;
uniform bool u_UseTextureRectangle0;
uniform sampler2DRect u_TextureRectangle0;
void main()
{
// set default
vec4 FinalColor = vec4( 1.0, 1.0, 1.0, 1.0 );
// diffuse map
if( !u_Wireframe )
{
if( u_UseTexture0 )
{
FinalColor = texture2D( u_Texture0, v_Coordinates );
}
else if( u_UseTextureRectangle0 )
{
FinalColor = texture2DRect( u_TextureRectangle0, v_Coordinates );
}
}
// output color
gl_FragColor = vec4( FinalColor );
}
program code:
void Widget::Render( Shader *shader )
{
if( shader )
{
// reset uniforms
shader->SetUniform( "u_Wireframe", false );
shader->SetUniform( "u_UseTexture0", false );
shader->SetUniform( "u_UseTextureRectangle0", false );
// setup texture
if( m_pkTexture )
{
// activate texture
glActiveTexture( GL_TEXTURE0 );
glBindTexture( GL_TEXTURE_2D, m_pkTexture->GetId() );
// set uniforms
if( m_pkTexture->IsNPOT() )
{
shader->SetUniform( "u_TextureRectangle0", 0 );
shader->SetUniform( "u_UseTextureRectangle0", true );
}
else
{
shader->SetUniform( "u_Texture0", 0 );
shader->SetUniform( "u_UseTexture0", true );
}
}
m_pkVertexBuffer->SetupAttributes( shader );
}
// render vertices
m_pkVertexBuffer->Render( false );
shader->SetUniform( "u_Wireframe", true );
m_pkVertexBuffer->Render( true );
}
thanks… and merry christmas