From 818f818f583881156eb279c71b1359bf2c4f3580 Mon Sep 17 00:00:00 2001 From: pryazha Date: Sun, 12 Oct 2025 15:25:23 +0500 Subject: change identation, maybe will change back, add own gl functions loading, and glx example --- shader.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 shader.c (limited to 'shader.c') diff --git a/shader.c b/shader.c new file mode 100644 index 0000000..cc01ad6 --- /dev/null +++ b/shader.c @@ -0,0 +1,42 @@ +#include "shader.h" + +u32 +compile_shader(u32 type, const char *src) +{ + if (!src) { + info("no source"); + return 0; + } + u32 id = gl_create_shader(type); + gl_shader_source(id, 1, &src, 0); + gl_compile_shader(id); + i32 status; + gl_get_shader_iv(id, gl_compile_status, &status); + if (!status) { + char log[512]; + gl_get_shader_info_log(id, 512, 0, log); + die("%s", log); + } + return id; +} + +u32 +create_shader(const char *vert_src, const char *frag_src) +{ + u32 program = gl_create_program(); + u32 vert = compile_shader(gl_vertex_shader, vert_src); + u32 frag = compile_shader(gl_fragment_shader, frag_src); + gl_attach_shader(program, vert); + gl_attach_shader(program, frag); + gl_link_program(program); + gl_delete_shader(vert); + gl_delete_shader(frag); + i32 success; + gl_get_program_iv(program, gl_link_status, &success); + if (!success) { + char log[512]; + gl_get_program_info_log(program, 512, 0, log); + die("%s", log); + } + return program; +} -- cgit v1.2.3-70-g09d2