void DepthPeelBin::drawFSTP( osg::RenderInfo& renderInfo, osg::State& state, osg::GL2Extensions* ext, PerContextInfo& pci, GLint& fstpLoc, GLint& texturePercentLoc ) { TRACEDUMP("DepthPeelBin::drawFSTP"); // Set up the program and uniforms. state.applyAttribute( _fstpProgram.get() ); if( fstpLoc < 0 ) #if OSG_SUPPORTS_UNIFORM_ID fstpLoc = state.getUniformLocation( _fstpUniform->getNameID() ); #else fstpLoc = state.getUniformLocation( _fstpUniform->getName() ); #endif _fstpUniform->apply( ext, fstpLoc ); if( texturePercentLoc < 0 ) #if OSG_SUPPORTS_UNIFORM_ID texturePercentLoc = state.getUniformLocation( _texturePercentUniform->getNameID() ); #else texturePercentLoc = state.getUniformLocation( _texturePercentUniform->getName() ); #endif _texturePercentUniform->apply( ext, texturePercentLoc ); state.setActiveTextureUnit( s_textureUnit+1 ); glBindTexture( GL_TEXTURE_2D, pci._colorTex ); state.applyAttribute( _fstpBlendFunc.get() ); state.applyMode( GL_BLEND, true ); state.applyMode( GL_DEPTH_TEST, false ); _fstp->draw( renderInfo ); state.setActiveTextureUnit( s_textureUnit+1 ); glBindTexture( GL_TEXTURE_2D, 0 ); }
void RenderingEffects::applyAllGlobalUniforms( osg::State& state, osg::GL2Extensions* gl2Ext ) { UniformVector::iterator it; for( it = _globalUniformVector.begin(); it != _globalUniformVector.end(); it++ ) { osg::Uniform* uniform = (*it).get(); #if OSG_SUPPORTS_UNIFORM_ID GLint location = state.getUniformLocation( uniform->getNameID() ); #else GLint location = state.getUniformLocation( uniform->getName() ); #endif if( location >= 0 ) uniform->apply( gl2Ext, location ); } }