Explorar el Código

[shader.h] Adding helper functions

Vinicius Teshima hace 1 año
padre
commit
41ea2a858e
Se han modificado 1 ficheros con 31 adiciones y 0 borrados
  1. 31 0
      src/shader.h

+ 31 - 0
src/shader.h

@@ -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_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,
 				     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);
 
@@ -92,6 +94,20 @@ shader_compile_file(const char *filepath, GLenum type)
 	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
 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 *
 shader_type_to_cstr(GLenum type)
 {