00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __mitkGLSLProgram_h
00011 #define __mitkGLSLProgram_h
00012
00013 #include "mitkVisualization2Includes.h"
00014
00015 #include "mitkObject.h"
00016 #include "GL/glew.h"
00017
00018 class MITK_VISUALIZATION2_API mitkGLSLShader : public mitkObject
00019 {
00020 public:
00021 MITK_TYPE(mitkGLSLShader,mitkObject)
00022 mitkGLSLShader();
00023 typedef enum
00024 {
00025 Vertex,
00026 Fragment
00027 } ShaderType;
00028 void SetCode(const char* code,ShaderType type);
00029 GLhandleARB GetShader() const;
00030
00031 protected:
00032 virtual ~mitkGLSLShader();
00033 private:
00034 mitkGLSLShader(const mitkGLSLShader&);
00035 void operator = (const mitkGLSLShader&);
00036 private:
00037 const char* m_Code;
00038 GLhandleARB m_Shader;
00039 };
00040
00041 #include "mitkList.h"
00042
00043 class MITK_VISUALIZATION2_API mitkGLSLProgram : public mitkObject
00044 {
00045 public:
00046 MITK_TYPE(mitkGLSLProgram,mitkObject)
00047 mitkGLSLProgram();
00048 void AddVertexShader(const char* code);
00049 void AddFragmentShader(const char* code);
00050 void Link();
00051 GLhandleARB GetProgram() { return m_GLSLProgram; }
00052 GLint GetUniformLocation(const char* name);
00053 void Use();
00054 void FinishUsing();
00055
00056 protected:
00057 virtual ~mitkGLSLProgram();
00058 private:
00059 mitkGLSLProgram(const mitkGLSLProgram&);
00060 void operator = (const mitkGLSLProgram&);
00061
00062 private:
00063 GLhandleARB m_GLSLProgram;
00064 mitkList m_ShaderList;
00065 };
00066
00067 #endif