diff options
Diffstat (limited to 'mons_3d/include/shader.h')
-rw-r--r-- | mons_3d/include/shader.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/mons_3d/include/shader.h b/mons_3d/include/shader.h new file mode 100644 index 0000000..553c6e4 --- /dev/null +++ b/mons_3d/include/shader.h @@ -0,0 +1,35 @@ +#ifndef MONS_SHADER_H +#define MONS_SHADER_H + +#include <glad/gl.h> +#include <stdbool.h> + +typedef unsigned int mons_shader; +typedef unsigned int mons_program; + +typedef enum mons_shader_type { + MONS_SHADER_TYPE_VERTEX = GL_VERTEX_SHADER, + MONS_SHADER_TYPE_FRAGMENT = GL_FRAGMENT_SHADER, +} mons_shader_type; + +struct mons_vec2; +struct mons_vec3; +struct mons_vec4; +struct mons_mat4; + +mons_shader mons_create_shader(mons_shader_type type, char *source, int len); +mons_program mons_create_program(mons_shader vertex_shader, mons_shader fragment_shader); +void mons_shader_set_float(mons_program shader, char *uniform_name, float value); +void mons_shader_set_vec2(mons_program shader, char *uniform_name, struct mons_vec2 value); +void mons_shader_set_vec3(mons_program shader, char *uniform_name, struct mons_vec3 value); +void mons_shader_set_vec4(mons_program shader, char *uniform_name, struct mons_vec4 value); +void mons_shader_set_mat4(mons_program shader, char *uniform_name, struct mons_mat4 value, bool transpose); + +void mons_shader_set_float_global(char *uniform_name, float value); +void mons_shader_set_vec2_global(char *uniform_name, struct mons_vec2 value); +void mons_shader_set_vec3_global(char *uniform_name, struct mons_vec3 value); +void mons_shader_set_vec4_global(char *uniform_name, struct mons_vec4 value); +void mons_shader_set_mat4_global(char *uniform_name, struct mons_mat4 value, bool transpose); +void mons_shader_apply_global_uniforms(mons_program shader); + +#endif |