00001 00002 #ifndef _GKEFFECT_SHADER_MANAGER_H 00003 #define _GKEFFECT_SHADER_MANAGER_H 00004 00005 #include <string> 00006 #include "Effect.h" 00007 #include "ShaderManager.h" 00008 00009 00010 namespace gk { 00011 00012 //! creation simplifiee d'un shader program a partir d'un script. 00013 class EffectShaderManager 00014 { 00015 Effect *m_effect; 00016 00017 // non copyable. 00018 EffectShaderManager( ); 00019 EffectShaderManager( const EffectShaderManager& ); 00020 EffectShaderManager& operator= ( const EffectShaderManager& ); 00021 00022 public: 00023 //! constructeur. charge le script. 00024 EffectShaderManager( const std::string& effect ); 00025 00026 //! constructeur. reference un script deja charge. 00027 EffectShaderManager( Effect *effect ); 00028 00029 //! destructeur. 00030 ~EffectShaderManager( ); 00031 00032 //! cree un shader program opengl > 2 a partir d'une section complete. 00033 GL2ShaderProgram *createShaderProgram( const std::string& program_key ) 00034 { 00035 return createShaderProgram2(program_key); 00036 } 00037 //! cree un shader program opengl > 2 a partir des sections de chaque shader. 00038 GL2ShaderProgram *createShaderProgram( 00039 const TextValue& vertex_key, 00040 const TextValue& fragment_key ) 00041 { 00042 return createShaderProgram2(vertex_key, fragment_key); 00043 } 00044 00045 //! cree un shader program opengl > 2 a partir d'une section complete. 00046 GL2ShaderProgram *createShaderProgram2( const std::string& program_key ); 00047 00048 //! cree un shader program opengl > 2 a partir des sections de chaque shader. 00049 GL2ShaderProgram *createShaderProgram2( 00050 const TextValue& vertex_key, 00051 const TextValue& fragment_key ); 00052 00053 #if defined GK_OPENGL3 || defined GK_OPENGL4 00054 //! cree un shader program opengl > 3 a partir d'une section complete. 00055 GL3ShaderProgram *createShaderProgram3( const std::string& program_key ); 00056 //! cree un shader program opengl > 3 a partir des sections de chaque shader. 00057 GL3ShaderProgram *createShaderProgram3( 00058 const TextValue& vertex_key, 00059 const TextValue& geometry_key, 00060 const TextValue& fragment_key ); 00061 #endif 00062 00063 #ifdef GK_OPENGL4 00064 //! cree un shader program opengl > 4 a partir d'une section complete. 00065 GL4ShaderProgram *createShaderProgram4( const std::string& program_key ); 00066 //! cree un shader program opengl > 4 a partir des sections de chaque shader. 00067 GL4ShaderProgram *createShaderProgram4( 00068 const TextValue& vertex_key, 00069 const TextValue& control_key, 00070 const TextValue& evaluation_key, 00071 const TextValue& goemetry_key, 00072 const TextValue& fragment_key ); 00073 #endif 00074 }; 00075 00076 } 00077 00078 #endif