Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __SHADER_H__
00021 #define __SHADER_H__
00022
00023
00024
00025 #include <blort/TomGine/headers.h>
00026 #include <blort/TomGine/tgMathlib.h>
00027
00028 namespace TomGine{
00029
00033 class tgShader{
00034 private:
00035 GLhandleARB fragment;
00036 GLhandleARB vertex;
00037 GLhandleARB program;
00038 public:
00039 tgShader( const char *vertex_file = NULL,
00040 const char *fragment_file = NULL,
00041 const char *header = NULL);
00042 ~tgShader();
00043
00044 void bind();
00045 void unbind();
00046 void dumpVars();
00047 void printInfoLog(GLhandleARB obj, const char *msg, ...);
00048 bool getStatus();
00049
00050 GLuint getAttribLoc(const char*);
00051 GLint getUniformLoc(const char*);
00052 void setUniform(const char*,int);
00053 void setUniform(const char*,unsigned);
00054 void setUniform(const char*,int,const int*);
00055 void setUniform(const char*,float);
00056 void setUniform(const char*,int,const float*);
00057 void setUniform(const char*,vec2);
00058 void setUniform(const char* var,int n,vec2* f);
00059 void setUniform(const char*,vec3);
00060 void setUniform(const char* var,int n,vec3* f);
00061 void setUniform(const char*,vec4);
00062 void setUniform(const char* var,int n,vec4* f);
00063 void setUniform(const char*,mat3,bool transpose=false);
00064 void setUniform(const char* var,int n,mat3* f,bool transpose);
00065 void setUniform(const char*,mat4,bool transpose=false);
00066 void setUniform(const char* var,int n,mat4* f,bool transpose);
00067
00068
00069 };
00070
00071
00072
00073 void *malloc_align(size_t size, int align);
00074 void free_align(void *ptr);
00075
00076
00077 char *read_text_file(const char* file);
00078
00079
00080 #undef OFFSETOF
00081 #define OFFSETOF(TYPE, MEMBER) (((size_t)&((TYPE *)1)->MEMBER) - 1)
00082
00083
00084 template<typename T>
00085 T Max(T a,T b)
00086 {
00087 return a>b?a:b;
00088 }
00089
00090 template<typename T>
00091 T Min(T a,T b)
00092 {
00093 return a<b?a:b;
00094 }
00095
00096 template<typename T>
00097 T Abs(T a)
00098 {
00099 return a>0?a:-a;
00100 }
00101
00102 template<typename T>
00103 T Square(T a)
00104 {
00105 return a*a;
00106 }
00107
00108 template<typename T>
00109 T Sign(T a)
00110 {
00111 return a==0?0:a>0?1:-1;
00112 }
00113
00114 }
00115
00116 #endif //__SHADER_H__