diff --git a/mybox.cpp b/mybox.cpp index 0a641e6..4ab5644 100644 --- a/mybox.cpp +++ b/mybox.cpp @@ -44,12 +44,14 @@ int main(void) { char infoLog[512]; // Create the vertex shader - char *shdr_src_vertex = readshader("vertex.glsl"); + GLchar *shdr_src_vertex; + readshader("vertex.glsl", &shdr_src_vertex); u32 vertexShader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertexShader, 1, &shdr_src_vertex, NULL); glCompileShader(vertexShader); glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success); freeshader(shdr_src_vertex); + if (!success) { glGetShaderInfoLog(vertexShader, 512, NULL, infoLog); std::cout << "ERROR SHADER::VERTEX::Compilation Failed\n" << @@ -58,7 +60,8 @@ int main(void) { } // Create the fragment shader - char *shdr_src_fragment = readshader("fragment.glsl"); + GLchar *shdr_src_fragment; + readshader("fragment.glsl", &shdr_src_fragment); u32 fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragmentShader, 1, &shdr_src_fragment, NULL); glCompileShader(fragmentShader); diff --git a/src/lgl_shader_tools.cpp b/src/lgl_shader_tools.cpp index 98ae7fb..4396081 100644 --- a/src/lgl_shader_tools.cpp +++ b/src/lgl_shader_tools.cpp @@ -5,43 +5,51 @@ #include #include #include - +#include #define CONST_READSHADER_MAX_FN_LEN 256 #define CONST_READSHADER_MAX_FN_SIZE 32*1024 -char *readshader(const char *fn) { +int readshader(const char *fn, GLchar** pshdr_source) { char shader_fn[CONST_READSHADER_MAX_FN_LEN]; assert(strlen(fn) + 9 < CONST_READSHADER_MAX_FN_LEN); struct stat status_buffer; - snprintf(shader_fn, CONST_READSHADER_MAX_FN_LEN, "shaders/%s", fn); + GLchar *shdr_source; + + snprintf(shader_fn, CONST_READSHADER_MAX_FN_LEN, "res/shaders/%s", fn); printf("%s\n", shader_fn); if (stat(shader_fn, &status_buffer) == -1) { printf("Failed to stat file '%s'\n", shader_fn); - return NULL; + return 0; } assert(status_buffer.st_size < CONST_READSHADER_MAX_FN_SIZE-1); FILE *fh = fopen(shader_fn, "r"); assert(fh != NULL); - char *shader_data = (char *)malloc(CONST_READSHADER_MAX_FN_SIZE); - assert(shader_data != NULL); + shdr_source = (GLchar *)malloc(CONST_READSHADER_MAX_FN_SIZE); + assert(shdr_source != NULL); - size_t read_bytes = fread((void *)shader_data, sizeof(char), + size_t read_bytes = fread((void *)shdr_source, sizeof(char), CONST_READSHADER_MAX_FN_SIZE-1, fh); assert(read_bytes < CONST_READSHADER_MAX_FN_SIZE-1); - shader_data[read_bytes] = '\0'; + shdr_source[read_bytes] = '\0'; + + puts(shdr_source); fclose(fh); + assert(shdr_source != NULL); - return shader_data; + + *pshdr_source = shdr_source; + + return 0; } -void freeshader(void *shader_fh) { - assert(shader_fh != NULL); - free(shader_fh); +void freeshader(void *pshdr_source) { + assert(pshdr_source != NULL); + free(pshdr_source); } diff --git a/src/lgl_shader_tools.h b/src/lgl_shader_tools.h index ffa1d11..b450e54 100644 --- a/src/lgl_shader_tools.h +++ b/src/lgl_shader_tools.h @@ -1,4 +1,5 @@ +#include -char *readshader(const char *fn); -void freeshader(void *shader_fh); \ No newline at end of file +int readshader(const char *fn, GLchar **pshdr_source); +void freeshader(void *pshdr_source); \ No newline at end of file