summaryrefslogtreecommitdiff
path: root/src/shader.h
blob: e6f794ef956b67ae2c3d28b6b4812bf278365d55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#pragma once

#include <GL/gl.h>
#include <cglm/cglm.h>

#include "mesh.h"

typedef struct {
	GLuint program_id;
	GLuint vertex_id;
	GLuint fragment_id;
	int attributes;
} Shader;

Shader *shader_init(const char *vertexFile, const char *fragmentFile);
void shader_bind(Shader *shader);
void shader_unbind(void);
void shader_free(Shader *shader);

GLint shader_uniform_location(Shader *shader, const char *name);
void shader_load_float(GLint location, float value);
void shader_load_int(GLint location, int value);
void shader_load_vec3(GLint location, vec3 value);
void shader_load_mat4(GLint location, mat4 value);
void shader_load_ubo(GLint location, GLuint index, Uniform *uniform);