void ComputeShaderChunk::deactivate(DrawEnv *pEnv, UInt32 uiIdx) { if(pEnv->getWindow()->getGLObjectId(getGLId()) == 0) return; pEnv->setActiveShader(0); OSGGETGLFUNC_GL3_ES(glUseProgram, osgGlUseProgram, ShaderProgram::getFuncIdUseProgram()); osgGlUseProgram(0); }
void VarianceShadowMapHandler::genMipMapCB(DrawEnv *pEnv, UInt32 uiLightIdx) { ShadowStageData::ShadowMapStore &vShadowMaps = _pStageData->getShadowMaps(); glBindTexture(GL_TEXTURE_2D, pEnv->getWindow()->getGLObjectId( vShadowMaps[uiLightIdx].pTexO->getGLId())); OSGGETGLFUNC_GL3_ES(glGenerateMipmapEXT, osgGlGenerateMipmap, ShadowStage::FuncIdGenMipmaps); osgGlGenerateMipmap(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0); }
void ComputeShaderChunk::updateVariableLocations(DrawEnv *pEnv, UInt32 uiProgram) { if(uiProgram == 0) return; const ShaderProgramVariables::MFVariablesType *pMFVars = NULL; const ShaderProgramVariables::MFProceduralVariablesType *pMFProcVars = NULL; if(_sfVariables.getValue() != NULL) { pMFVars = _sfVariables.getValue()->getMFVariables (); pMFProcVars = _sfVariables.getValue()->getMFProceduralVariables(); } if(pMFVars != NULL && pMFVars->size() != 0) { MFInt32 &vVarLocations = *this->editMFVariableLocations(); OSG_ASSERT(pMFVars->size() == vVarLocations.size()); MFInt32::iterator mLocIt = vVarLocations.begin(); ShaderProgramVariables::MFVariablesType::const_iterator mVarIt = pMFVars->begin(); ShaderProgramVariables::MFVariablesType::const_iterator mVarEnd = pMFVars->end (); OSGGETGLFUNC_GL3_ES(glGetUniformLocation, osgGlGetUniformLocation, ShaderProgram::getFuncIdGetUniformLocation()); for(; mVarIt != mVarEnd; ++mVarIt, ++mLocIt) { *mLocIt = osgGlGetUniformLocation(uiProgram, (*mVarIt)->getName().c_str()); } } if(pMFProcVars != NULL && pMFProcVars->size() != 0) { MFInt32 &vVarLocations = *this->editMFProceduralVariableLocations(); OSG_ASSERT(pMFProcVars->size() == vVarLocations.size()); MFInt32::iterator mLocIt = vVarLocations.begin(); ShaderProgramVariables::MFProceduralVariablesType::const_iterator mVarIt = pMFProcVars->begin(); ShaderProgramVariables::MFProceduralVariablesType::const_iterator mVarEnd = pMFProcVars->end (); OSGGETGLFUNC_GL3_ES(glGetUniformLocation, osgGlGetUniformLocation, ShaderProgram::getFuncIdGetUniformLocation()); for(; mVarIt != mVarEnd; ++mVarIt, ++mLocIt) { *mLocIt = osgGlGetUniformLocation(uiProgram, (*mVarIt)->getName().c_str()); } } }