1#ifndef SHADER_UTIL_H 2#define SHADER_UTIL_H 3 4 5 6struct uniform_info 7{ 8 const char *name; 9 GLuint size; /**< number of value[] elements: 1, 2, 3 or 4 */ 10 GLenum type; /**< GL_FLOAT, GL_FLOAT_VEC4, GL_INT, etc */ 11 GLfloat value[4]; 12 GLint location; /**< filled in by InitUniforms() */ 13}; 14 15#define END_OF_UNIFORMS { NULL, 0, GL_NONE, { 0, 0, 0, 0 }, -1 } 16 17 18struct attrib_info 19{ 20 const char *name; 21 GLuint size; /**< number of value[] elements: 1, 2, 3 or 4 */ 22 GLenum type; /**< GL_FLOAT, GL_FLOAT_VEC4, GL_INT, etc */ 23 GLint location; 24}; 25 26 27extern GLboolean 28ShadersSupported(void); 29 30extern GLuint 31CompileShaderText(GLenum shaderType, const char *text); 32 33extern GLuint 34CompileShaderFile(GLenum shaderType, const char *filename); 35 36extern GLuint 37LinkShaders(GLuint vertShader, GLuint fragShader); 38 39extern GLboolean 40ValidateShaderProgram(GLuint program); 41 42extern GLdouble 43GetShaderCompileTime(void); 44 45extern GLdouble 46GetShaderLinkTime(void); 47 48extern void 49SetUniformValues(GLuint program, struct uniform_info uniforms[]); 50 51extern GLuint 52GetUniforms(GLuint program, struct uniform_info uniforms[]); 53 54extern void 55PrintUniforms(const struct uniform_info uniforms[]); 56 57extern GLuint 58GetAttribs(GLuint program, struct attrib_info attribs[]); 59 60extern void 61PrintAttribs(const struct attrib_info attribs[]); 62 63#endif /* SHADER_UTIL_H */ 64