예제 #1
0
 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);
 }
예제 #2
0
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;
}