mirror of
https://github.com/IllusionMan1212/O2048.git
synced 2026-10-24 10:12:37 +00:00
initial
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package zephr
|
||||
|
||||
import "core:fmt"
|
||||
|
||||
import gl "vendor:OpenGL"
|
||||
|
||||
Shader :: struct {
|
||||
program: u32
|
||||
}
|
||||
|
||||
create_shader :: proc(vertex_path: string, fragment_path: string) -> (Shader, bool) {
|
||||
shader: Shader
|
||||
|
||||
program, success := gl.load_shaders(vertex_path, fragment_path)
|
||||
shader.program = program;
|
||||
|
||||
return shader, success;
|
||||
}
|
||||
|
||||
use_shader :: proc(shader: Shader) {
|
||||
gl.UseProgram(shader.program);
|
||||
}
|
||||
|
||||
set_mat4f :: proc(shader: Shader, name: cstring, mat4: Mat4, transpose: bool = false) {
|
||||
mat4 := mat4
|
||||
loc := gl.GetUniformLocation(shader.program, name);
|
||||
gl.UniformMatrix4fv(loc, 1, transpose, raw_data(&mat4))
|
||||
}
|
||||
|
||||
set_float :: proc(shader: Shader, name: cstring, val: f32) {
|
||||
loc := gl.GetUniformLocation(shader.program, name);
|
||||
gl.Uniform1f(loc, val);
|
||||
}
|
||||
|
||||
set_int :: proc(shader: Shader, name: cstring, val: i32) {
|
||||
loc := gl.GetUniformLocation(shader.program, name);
|
||||
gl.Uniform1i(loc, val);
|
||||
}
|
||||
|
||||
set_bool :: proc(shader: Shader, name: cstring, val: bool) {
|
||||
set_int(shader, name, cast(i32)val);
|
||||
}
|
||||
|
||||
set_vec2f :: proc(shader: Shader, name: cstring, val1: f32, val2: f32) {
|
||||
loc := gl.GetUniformLocation(shader.program, name);
|
||||
gl.Uniform2f(loc, val1, val2);
|
||||
}
|
||||
|
||||
set_vec3f :: proc(shader: Shader, name: cstring, val1: f32, val2: f32, val3: f32) {
|
||||
loc := gl.GetUniformLocation(shader.program, name);
|
||||
gl.Uniform3f(loc, val1, val2, val3);
|
||||
}
|
||||
|
||||
set_vec4f :: proc(shader: Shader, name: cstring, val1: f32, val2: f32, val3: f32, val4: f32) {
|
||||
loc := gl.GetUniformLocation(shader.program, name);
|
||||
gl.Uniform4f(loc, val1, val2, val3, val4);
|
||||
}
|
||||
Reference in New Issue
Block a user