|
@@ -19,9 +19,11 @@ struct ret_uint32_t_err {
|
|
|
|
|
|
|
|
struct ret_uint32_t_err shader_compile_source(const char *src, GLenum type);
|
|
struct ret_uint32_t_err shader_compile_source(const char *src, GLenum type);
|
|
|
struct ret_uint32_t_err shader_compile_file(const char *filepath, GLenum type);
|
|
struct ret_uint32_t_err shader_compile_file(const char *filepath, GLenum type);
|
|
|
|
|
+uint32_t shader_compile_file_or_exit(const char *filepath, GLenum type);
|
|
|
|
|
|
|
|
struct ret_uint32_t_err program_link(uint32_t vert_shader,
|
|
struct ret_uint32_t_err program_link(uint32_t vert_shader,
|
|
|
uint32_t frag_shader);
|
|
uint32_t frag_shader);
|
|
|
|
|
+uint32_t program_link_or_exit(uint32_t vert_shader, uint32_t frag_shader);
|
|
|
|
|
|
|
|
const char *shader_type_to_cstr(GLenum type);
|
|
const char *shader_type_to_cstr(GLenum type);
|
|
|
|
|
|
|
@@ -92,6 +94,20 @@ shader_compile_file(const char *filepath, GLenum type)
|
|
|
return ret;
|
|
return ret;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+uint32_t
|
|
|
|
|
+shader_compile_file_or_exit(const char *filepath, GLenum type)
|
|
|
|
|
+{
|
|
|
|
|
+ enum shader_err err;
|
|
|
|
|
+ uint32_t shader;
|
|
|
|
|
+ RET_UNWRAP2(shader, err, struct ret_uint32_t_err,
|
|
|
|
|
+ shader_compile_file(filepath, type));
|
|
|
|
|
+ if ( err != SHADER_ERR_OK ) {
|
|
|
|
|
+ fprintf(stderr, "Failed to compile shader %s\n", filepath);
|
|
|
|
|
+ exit(EXIT_FAILURE);
|
|
|
|
|
+ }
|
|
|
|
|
+ return shader;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
struct ret_uint32_t_err
|
|
struct ret_uint32_t_err
|
|
|
program_link(uint32_t vert_shader, uint32_t frag_shader)
|
|
program_link(uint32_t vert_shader, uint32_t frag_shader)
|
|
|
{
|
|
{
|
|
@@ -136,6 +152,21 @@ err: ;
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+uint32_t
|
|
|
|
|
+program_link_or_exit(uint32_t vert_shader, uint32_t frag_shader)
|
|
|
|
|
+{
|
|
|
|
|
+ enum shader_err err;
|
|
|
|
|
+ uint32_t prog;
|
|
|
|
|
+ RET_UNWRAP2(prog, err, struct ret_uint32_t_err,
|
|
|
|
|
+ program_link(vert_shader, frag_shader));
|
|
|
|
|
+ if ( err != SHADER_ERR_OK ) {
|
|
|
|
|
+ fprintf(stderr, "Failed to link program\n");
|
|
|
|
|
+ exit(EXIT_FAILURE);
|
|
|
|
|
+ }
|
|
|
|
|
+ return prog;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
const char *
|
|
const char *
|
|
|
shader_type_to_cstr(GLenum type)
|
|
shader_type_to_cstr(GLenum type)
|
|
|
{
|
|
{
|