Added a shader program manager.

This commit is contained in:
spartanj
2010-06-26 21:54:02 -03:00
parent f6c1ba01de
commit dc93fa9638
10 changed files with 713 additions and 70 deletions

View File

@@ -0,0 +1,70 @@
#include "cshaderprogrammanager.hpp"
namespace EE { namespace Graphics {
cShaderProgramManager::cShaderProgramManager()
{
}
cShaderProgramManager::~cShaderProgramManager()
{
}
void cShaderProgramManager::Add( cShaderProgram * ShaderProgram ) {
Uint32 c = mShaders.count( ShaderProgram->Name() );
if ( 0 == c ) {
mShaders[ ShaderProgram->Name() ] = ShaderProgram;
} else {
ShaderProgram->Name( ShaderProgram->Name() + intToStr( c + 1 ) );
Add( ShaderProgram );
}
}
void cShaderProgramManager::Remove( cShaderProgram * ShaderProgram ) {
mShaders.erase( ShaderProgram->Name() );
}
Uint32 cShaderProgramManager::ExistsName( const std::string& name ) {
return mShaders.count( name );
}
cShaderProgram * cShaderProgramManager::GetByName( const std::string& Name ) {
std::map<std::string, cShaderProgram*>::iterator it = mShaders.find( Name );
if ( mShaders.end() != it ) {
return it->second;
}
return NULL;
}
cShaderProgram * cShaderProgramManager::GetById( Uint32 id ) {
std::map<std::string, cShaderProgram*>::iterator it;
for ( it = mShaders.begin(); it != mShaders.end(); it++ ) {
cShaderProgram * sp = reinterpret_cast< cShaderProgram* > ( it->second );
if ( id == sp->GetId() )
return sp;
}
return NULL;
}
eeUint cShaderProgramManager::Count() {
return mShaders.size();
}
void cShaderProgramManager::Reload() {
std::map<std::string, cShaderProgram*>::iterator it;
for ( it = mShaders.begin(); it != mShaders.end(); it++ ) {
cShaderProgram * sp = reinterpret_cast< cShaderProgram* > ( it->second );
sp->Reload();
}
}
}}