![]() |
TAPs 0.7.7.3
|
00001 /****************************************************************************** 00002 TAPsGlobalGLSLShaderPool.hpp 00003 00004 GlobalGLSLShaderPool class (hpp file). 00005 00006 SUKITTI PUNAK (02/18/2009) 00007 ******************************************************************************/ 00008 #ifndef TAPs_GLOBAL_GLSL_SHADER_POOL_HPP 00009 #define TAPs_GLOBAL_GLSL_SHADER_POOL_HPP 00010 00011 #include "TAPsGLSLShaderPool.hpp" 00012 #include "../OpenGL/TAPsOpenGLTexturePool.hpp" 00013 00014 BEGIN_NAMESPACE_TAPs__OpenGL 00015 00016 //============================================================================= 00022 class GlobalGLSLShaderPool { 00023 //============================================================================= 00024 public: 00025 // Member Functions ------------------------------------------------------- 00027 friend std::ostream & operator<< ( std::ostream &output, GlobalGLSLShaderPool const &obj ) 00028 { 00029 output << obj.StrInfo(); 00030 return output; 00031 } 00032 //------------------------------------------------------------------------- 00034 static bool Init (); 00036 static bool Clear (); 00037 //------------------------------------------------------------------------- 00039 static std::string StrInfo (); 00040 // Data Members ----------------------------------------------------------- 00041 enum SHADER { 00042 NONE = 0, 00043 DEFAULT, 00044 DEFAULT_MESH_2DTEXTURE, 00045 MINIMUM, 00046 BRICK, 00047 PHONG_ONE_PT_LT, 00048 PHONG_ONE_DIR_LT, 00049 //PHONG_ONE_PT_LT_AND_ATEX, //!< Phong's shading with one point light and a texture 00050 }; 00051 00083 //--------------------------------------------------------------- 00084 static GLSLProgramObject * GetShaderProgram ( enum SHADER shaderName ) 00085 { 00086 if ( m_bInitialized ) return m_ShaderProgramList[shaderName]; 00087 return NULL; 00088 } 00089 00090 static void SetShaderParameters ( enum SHADER shaderName )//, Parameters ); 00091 { 00092 switch ( shaderName ) { 00093 case DEFAULT: 00094 //SetDefaultShaderStaticParameters(); 00095 break; 00096 case DEFAULT_MESH_2DTEXTURE: 00097 SetDefaultMesh2DTextureShaderStaticParameters(); 00098 break; 00099 case PHONG_ONE_PT_LT: 00100 //SetPhongOnePtLtShaderStaticParameters(); 00101 break; 00102 case PHONG_ONE_DIR_LT: 00103 //SetPhongOneDirLtShaderStaticParameters(); 00104 break; 00105 case BRICK: 00106 SetBrickShaderStaticParameters(); 00107 break; 00108 case MINIMUM: 00109 break; 00110 } 00111 } 00112 00113 //static void SetBrickShaderDynamicParameters ()// Parameters ); 00114 00115 // For Textures 00116 //--------------------------------------------------------------- 00117 static GLuint Get2DTextureID ( unsigned int id ) 00118 { 00119 return m_TexturePool.Get2DTextureNumber( id ); 00120 } 00121 00122 //============================================================================= 00123 protected: 00124 // Member Functions ------------------------------------------------------- 00125 00126 // Set static parameters of DEFAULT_MESH_2DTEXTURE Shader 00127 static void SetDefaultMesh2DTextureShaderStaticParameters () 00128 { 00129 //m_ShaderProgramList[BRICK]->SetUniform3f( "BrickColor", 1.0, 0.3, 0.2); 00130 //m_ShaderProgramList[BRICK]->SetUniform3f( "MortarColor", 0.85, 0.86, 0.84); 00131 //m_ShaderProgramList[BRICK]->SetUniform2f( "BrickSize", 0.30, 0.15); 00132 //m_ShaderProgramList[BRICK]->SetUniform2f( "BrickPct", 0.90, 0.85); 00133 //m_ShaderProgramList[BRICK]->SetUniform3f( "LightPosition", 0.0, 0.0, 4.0); 00134 } 00135 00136 // Set static parameters of BRICK Shader 00137 static void SetBrickShaderStaticParameters () 00138 { 00139 m_ShaderProgramList[BRICK]->SetUniform3f( "BrickColor", 1.0, 0.3, 0.2); 00140 m_ShaderProgramList[BRICK]->SetUniform3f( "MortarColor", 0.85, 0.86, 0.84); 00141 m_ShaderProgramList[BRICK]->SetUniform2f( "BrickSize", 0.30, 0.15); 00142 m_ShaderProgramList[BRICK]->SetUniform2f( "BrickPct", 0.90, 0.85); 00143 m_ShaderProgramList[BRICK]->SetUniform3f( "LightPosition", 0.0, 0.0, 4.0); 00144 } 00145 // Data Members ----------------------------------------------------------- 00146 //============================================================================= 00147 private: 00148 // Member Functions ------------------------------------------------------- 00149 // Data Members ----------------------------------------------------------- 00150 static const unsigned int m_NUM_OF_SHADERS = 32; 00151 static const unsigned int m_NUM_OF_2DTEXTURES = 8; 00152 static const unsigned int m_NUM_OF_3DTEXTURES = 4; 00153 static GLSLShaderPool m_ShaderPool; 00154 static GLSLProgramObject * m_ShaderProgramList[m_NUM_OF_SHADERS]; 00155 static GLuint m_GL2DTexList[m_NUM_OF_2DTEXTURES]; 00156 static GLuint m_GL3DTexList[m_NUM_OF_3DTEXTURES]; 00157 static bool m_bInitialized; 00158 // For Textures 00159 static TexturePool m_TexturePool; 00160 //============================================================================= 00161 }; // END CLASS GlobalGLSLShaderPool 00162 //============================================================================= 00163 END_NAMESPACE_TAPs__OpenGL 00164 //----------------------------------------------------------------------------- 00165 // If the class is NOT template, use this 00166 #if !defined( TAPs_USE_EXPORT ) 00167 #include "TAPsGlobalGLSLShaderPool.cpp" 00168 #endif 00169 00170 //----------------------------------------------------------------------------- 00171 #endif 00172 //34567890123456789012345678901234567890123456789012345678901234567890123456789 00173 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----