00001
00002 #ifndef _GKSHADER_MANAGER_H
00003 #define _GKSHADER_MANAGER_H
00004
00005 #include "GLManager.h"
00006 #include "GL/GLShaderObjectIO.h"
00007 #include "GL/TPShaderProgram.h"
00008
00009 namespace gk {
00010
00011
00012 inline
00013 GLShaderProgram *createShaderProgram(
00014 const std::string& vertex,
00015 const std::string& fragment )
00016 {
00017 return GLManager<GLShaderProgram>::manager().insert(
00018 new GL2ShaderProgram(vertex, fragment));
00019 }
00020
00021 #if defined GK_OPENGL3 || defined GK_OPENGL4
00022
00023 inline
00024 GL3ShaderProgram *createShaderProgram3(
00025 const std::string& vertex,
00026 const std::string& geometry,
00027 const std::string& fragment )
00028 {
00029 return GLManager<GL3ShaderProgram>::manager().insert(
00030 new GL3ShaderProgram(vertex, geometry, fragment));
00031 }
00032 #endif
00033
00034 #ifdef GK_OPENGL4
00035
00036 inline
00037 GL4ShaderProgram *createShaderProgram4(
00038 const std::string& vertex,
00039 const std::string& control,
00040 const std::string& evaluation,
00041 const std::string& geometry,
00042 const std::string& fragment )
00043 {
00044 return GLManager<GL4ShaderProgram>::manager().insert(
00045 new GL4ShaderProgram(vertex, control, evaluation, geometry, fragment));
00046 }
00047 #endif
00048
00049 }
00050
00051 #endif