#ifndef SHADERS_H #define SHADERS_H #include #include "../math/matrix4x4.h" typedef struct { /* Program ID */ GLuint ID; /* Program Attributes */ GLint position; GLint color; GLint uv; GLint normal; /* Program Uniforms */ GLint totalTransform; GLint modelToWorld; GLint lightPosition; GLint ambientLight; GLint lightColor; GLint lightAttenuation; GLint World_eyePosition; GLint Texture; GLint Normal_Map; /* Program Multi Purpose Uniforms */ GLint extra0; GLint extra1; GLint extra2; GLint extra3; GLint extra4; GLint extra5; } Shader_Layout; extern GLuint Shader_CompileShaders(const char* vertexShader, const char* fragmentShader); extern GLint Shader_GetUniformLocation( GLuint programID, const char* uniformName ); extern GLint Shader_GetAttribLocation ( GLuint programID, const char* attributeName ); extern void Shader_Destroy(GLuint programID); extern void Shader_SetUniformMat4( GLuint programID, const char* name, const float *matrix ); extern void Shader_SetUniformFloat( GLuint programID, const char* name, const float val ); extern void Shader_SetUniformVec2( GLuint programID, const char* name, const float vec[2] ); extern void Shader_SetUniformVec3( GLuint programID, const char* name, const float vec[3] ); extern void Shader_SetUniformVec4( GLuint programID, const char* name, const float vec[4] ); extern void Shader_SetUniformInt( GLuint programID, const char* name, const int val ); #endif // SHADERS_H