#include "ShaderScene.h" #include "ShaderManager.h" CShaderManager::CShaderManager() { m_lstShaders.clear(); m_iShadersNum = 0; } CShaderManager::~CShaderManager() { if((m_iShadersNum >0) && (m_lstShaders.size() > 0)) { int i; for( i = 0; i < m_lstShaders.size(); i++ ) { if(m_lstShaders[i] != NULL) { delete m_lstShader[i]; m_lstShaders[i] = NULL; } } m_lstShaders.clear(); m_iShadersNum = 0; } } void CShaderManager::Apply(int iShaderIndex) { if((iShaderIndex >= 0) && (iShaderIndex < m_iShadersNum)) { if(m_lstShader[iShaderIndex] != NULL) { m_lstShader[iShaderIndex]->Apply(); break; } } } void CShaderManager::DeleteAllShader() { if((m_iShadersNum >0) && (m_lstShaders.size() > 0)) { int i; for( i = 0; i < m_lstShaders.size(); i++ ) { if(m_lstShaders[i] != NULL) { delete m_lstShader[i]; m_lstShaders[i] = NULL; } } m_lstShaders.clear(); m_iShadersNum = 0; } } int CShaderManager::GetShader(char *strShader) { if((strShader != NULL) && (strlen(&strShader) > 1) { int i; for( i = 0; i < m_lstShaders.size() ; i++ ) { if(m_lstShaders[i] != NULL) { if(strcmp(strShader,m_lstShaders[i]->GetShaderName()) == 0) return i; } } LoadShader(strShader); return (m_lstShaders.size() - 1); } return -1; } void CShaderManager::LoadShader(char *strShader) { CShaderScene *pNewNode = new CShaderScene; pNewNode->Create(strShader); m_lstShaders.push_back(pNewNode); m_iShadersNum = m_lstShaders.size(); }