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