GLSLSceneRenderer::GLSLSceneRenderer(ResourceManager * resource_manager, Scene * scene) : SceneRenderer(scene) { /* Load programs */ registerProgram((GLSLProgram *)resource_manager->getProgram("PlainShader.shader").get()); registerProgram((GLSLProgram *)resource_manager->getProgram("BlinnPhongShader.shader").get()); registerProgram((GLSLProgram *)resource_manager->getProgram("BillboardParticleShader.shader").get()); /* Setup OpenGL initial settings */ glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); glDepthFunc(GL_LEQUAL); }
ShaderProgram* ProgramManager::getProgram( const ShaderMaterial* shader, bool precompile ) { if( !shader ) return nullptr; ShaderProgramsMap::iterator it = programs.find(shader); if( it != programs.end() ) { ShaderProgram* program = it->second.get(); return program; } ShaderProgram* program = createProgram(shader); registerProgram(shader, program); return program; }