1#pragma once
2
3#include "config.h"
4
5#ifdef USE_GLES
6 #include <GLES2/gl2.h>
7 #include <GLES2/gl2ext.h>
8#else
9 #include <GL/glew.h>
10#endif
11
12typedef struct SHADER
13{
14 GLuint program;
15 GLuint vertexShader;
16 GLuint fragmentShader;
17} Shader;
18
19Shader *shaderLoad(const char *vertexCode, const char *fragmentCode);
20void shaderLink(Shader *shader);
21void shaderBind(Shader *shader);
22void shaderUnbind();
23void shaderBindAttrib(Shader *shader, const char*, unsigned int);
24void shaderFinalize(Shader *shader);
25void shaderDelete(Shader *shader);
26
27void shaderUniform1i(Shader *shader, const char*, int);
28void shaderUniform1f(Shader *shader, const char*, float);
29void shaderUniform1fv(Shader *shader, const char*, int, float*);
30void shaderUniform2f(Shader *shader, const char*, float, float);
31void shaderUniform2fv(Shader *shader, const char*, int, float*);
32void shaderUniform3iv(Shader *shader, const char*, int, int*);
33void shaderUniform3fv(Shader *shader, const char*, int, float*);
34void shaderUniform3f(Shader *shader, const char*, const float, const float, const float);
35void shaderUniformMatrix3fv(Shader *shader, const char*, int, GLfloat*);
36void shaderUniform4iv(Shader *shader, const char*, int, int*);
37void shaderUniform4fv(Shader *shader, const char*, int, float*);
38void shaderUniform4f(Shader *shader, const char*, float, float, float, float);
39void shaderUniformMatrix4fv(Shader *shader, const char*, int, GLfloat*);
40