#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; }