00001
00002 #ifndef _GKSHADER_MANAGER_H
00003 #define _GKSHADER_MANAGER_H
00004
00005 #include "GLManager.h"
00006 #include "GL/GLShaderObject.h"
00007 #include "GL/GLShaderObjectIO.h"
00008 #include "GL/TPShaderProgram.h"
00009
00010
00011 namespace gk {
00012
00013
00014 inline
00015 GL2ShaderProgram *createShaderProgram2(
00016 const std::string& vertex,
00017 const std::string& fragment )
00018 {
00019 return GLManager<GL2ShaderProgram>::manager().insert(
00020 new GL2ShaderProgram(vertex, fragment));
00021 }
00022
00023
00024 inline
00025 GL2ShaderProgram *createShaderProgram2(
00026 const TextFile *vertex,
00027 const TextFile *fragment )
00028 {
00029 return GLManager<GL2ShaderProgram>::manager().insert(
00030 new GL2ShaderProgram(vertex, fragment));
00031 }
00032
00033
00034 inline
00035 GL2ShaderProgram *createShaderProgram(
00036 const std::string& vertex,
00037 const std::string& fragment )
00038 {
00039 return createShaderProgram2(vertex, fragment);
00040 }
00041
00042
00043 inline
00044 GL2ShaderProgram *createShaderProgram(
00045 const TextFile *vertex,
00046 const TextFile *fragment )
00047 {
00048 return createShaderProgram2(vertex, fragment);
00049 }
00050
00051 #if defined GK_OPENGL3 || defined GK_OPENGL4
00052
00053 inline
00054 GL3ShaderProgram *createShaderProgram3(
00055 const std::string& vertex,
00056 const std::string& geometry,
00057 const std::string& fragment )
00058 {
00059 return GLManager<GL3ShaderProgram>::manager().insert(
00060 new GL3ShaderProgram(vertex, geometry, fragment));
00061 }
00062
00063
00064 inline
00065 GL3ShaderProgram *createShaderProgram3(
00066 const TextFile *vertex,
00067 const TextFile *geometry,
00068 const TextFile *fragment )
00069 {
00070 return GLManager<GL3ShaderProgram>::manager().insert(
00071 new GL3ShaderProgram(vertex, geometry, fragment));
00072 }
00073 #endif
00074
00075 #ifdef GK_OPENGL4
00076
00077 inline
00078 GL4ShaderProgram *createShaderProgram4(
00079 const std::string& vertex,
00080 const std::string& control,
00081 const std::string& evaluation,
00082 const std::string& geometry,
00083 const std::string& fragment )
00084 {
00085 return GLManager<GL4ShaderProgram>::manager().insert(
00086 new GL4ShaderProgram(vertex, control, evaluation, geometry, fragment));
00087 }
00088
00089
00090 inline
00091 GL4ShaderProgram *createShaderProgram4(
00092 const TextFile *vertex,
00093 const TextFile *control,
00094 const TextFile *evaluation,
00095 const TextFile *geometry,
00096 const TextFile *fragment )
00097 {
00098 return GLManager<GL4ShaderProgram>::manager().insert(
00099 new GL4ShaderProgram(vertex, control, evaluation, geometry, fragment));
00100 }
00101 #endif
00102
00103 }
00104
00105 #endif