summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--render_sdl.c21
-rw-r--r--shaders/default.f.glsl (renamed from default.f.glsl)0
-rw-r--r--shaders/default.v.glsl (renamed from default.v.glsl)0
3 files changed, 15 insertions, 6 deletions
diff --git a/render_sdl.c b/render_sdl.c
index f4241fc..f36318d 100644
--- a/render_sdl.c
+++ b/render_sdl.c
@@ -8,6 +8,7 @@
#include "render.h"
#include "blastem.h"
#include "io.h"
+#include "util.h"
#ifndef DISABLE_OPENGL
#include <GL/glew.h>
@@ -111,14 +112,22 @@ const GLushort element_data[] = {0, 1, 2, 3};
GLuint load_shader(char * fname, GLenum shader_type)
{
- FILE * f = fopen(fname, "r");
+ char * parts[] = {getenv("HOME"), "/.config/blastem/shaders/", fname};
+ char * shader_path = alloc_concat_m(3, parts);
+ FILE * f = fopen(shader_path, "r");
+ free(shader_path);
if (!f) {
- fprintf(stderr, "Failed to open shader file %s for reading\n", fname);
- return 0;
+ parts[0] = get_exe_dir();
+ parts[1] = "/shaders/";
+ shader_path = alloc_concat_m(3, parts);
+ f = fopen(shader_path, "r");
+ free(shader_path);
+ if (!f) {
+ fprintf(stderr, "Failed to open shader file %s for reading\n", fname);
+ return 0;
+ }
}
- fseek(f, 0, SEEK_END);
- long fsize = ftell(f);
- fseek(f, 0, SEEK_SET);
+ long fsize = file_size(f);
GLchar * text = malloc(fsize);
if (fread(text, 1, fsize, f) != fsize) {
fprintf(stderr, "Error reading from shader file %s\n", fname);
diff --git a/default.f.glsl b/shaders/default.f.glsl
index f7bb89a..f7bb89a 100644
--- a/default.f.glsl
+++ b/shaders/default.f.glsl
diff --git a/default.v.glsl b/shaders/default.v.glsl
index 367c128..367c128 100644
--- a/default.v.glsl
+++ b/shaders/default.v.glsl