From 267bebfc227c94f543a39e2aa75fb101bc06932e Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Fri, 21 May 2010 19:24:51 +0200 Subject: Moved engine-sources to seperate subdirectory. --- engine/shader.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 engine/shader.h (limited to 'engine/shader.h') diff --git a/engine/shader.h b/engine/shader.h new file mode 100644 index 0000000..012165a --- /dev/null +++ b/engine/shader.h @@ -0,0 +1,56 @@ +#ifndef _SHADER_H_ +#define _SHADER_H_ + +#include +#include +#define GL_GLEXT_PROTOTYPES +#ifndef __APPLE__ +#include +#include +#else +#include +#include +#endif + +class GLBaseShader { + friend class GLShaderProgram; + + protected: + bool shader_source(const char *filename); + bool shader_source(std::string& filename); + unsigned int shader; + public: + GLBaseShader(GLenum); +}; + +class GLVertexShader : public GLBaseShader { + public: + GLVertexShader() : GLBaseShader(GL_VERTEX_SHADER) {}; + GLVertexShader(const char *s) : GLBaseShader(GL_VERTEX_SHADER) { shader_source(s); }; + GLVertexShader(std::string& s) : GLBaseShader(GL_VERTEX_SHADER) { shader_source(s); }; +}; + +class GLFragmentShader : public GLBaseShader { + public: + GLFragmentShader() : GLBaseShader(GL_FRAGMENT_SHADER) {}; + GLFragmentShader(const char *s) : GLBaseShader(GL_FRAGMENT_SHADER) { shader_source(s); }; + GLFragmentShader(std::string& s) : GLBaseShader(GL_FRAGMENT_SHADER) { shader_source(s); }; +}; + +class GLShaderProgram { + protected: + unsigned int program; + public: + GLShaderProgram(); + + bool attach(GLBaseShader&); + bool detach(GLBaseShader&); + bool link(); + bool use(); + void remove(); +}; + +void print_ogl_error(GLenum); +bool print_check_ogl_error(); + +#endif -- cgit v1.2.3