From adbc72e159d48e6b1ad091e6ac19fd1cd6d5f798 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Mon, 22 Oct 2018 16:08:06 +0300 Subject: Use shaders/data.h to generate material code There is enough information to generate some of the material loading code from shaders/data.h. --- glprog.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'glprog.c') diff --git a/glprog.c b/glprog.c index 10f01a4..93dc22c 100644 --- a/glprog.c +++ b/glprog.c @@ -33,7 +33,7 @@ static const struct { { GL_TESS_EVALUATION_SHADER, "tese", false, "" }, { GL_GEOMETRY_SHADER, "geom", false, "" }, { GL_FRAGMENT_SHADER, "frag", true, -#define SH_TEX(type, name) "uniform sampler" #type " " #name ";\n" +#define SH_TEX(type, name) "uniform sampler" #type " t" #name ";\n" #define SH_OUT(type, name) "out " #type " " #name ";\n" #include "shaders/data.h" }, @@ -110,6 +110,7 @@ static void load_shader(struct shader *s, const char *path) GLint success, pos = 0; char log[LOGSIZE], *full, *src = NULL; size_t srclen = 0, fullsz; + GLint texture = 0; assert(s != NULL); assert(path != NULL); @@ -144,8 +145,10 @@ static void load_shader(struct shader *s, const char *path) detach_shaders(prog); + gl_prog_use(prog); + #define SH_UNI(_, name) s->uni.name = gl_uni_loc(prog, #name); -#define SH_TEX(_, name) s->tex.name = gl_uni_loc(prog, #name); +#define SH_TEX(_, name) gl_uni_set1i(gl_uni_loc(prog, "t" #name), texture++); #include "shaders/data.h" s->prog = prog; } -- cgit v1.2.3-54-g00ecf