diff options
author | Tomasz Kramkowski <tk@the-tk.com> | 2018-10-22 16:08:06 +0300 |
---|---|---|
committer | Tomasz Kramkowski <tk@the-tk.com> | 2018-10-22 16:08:06 +0300 |
commit | adbc72e159d48e6b1ad091e6ac19fd1cd6d5f798 (patch) | |
tree | 8f9fc2ef41fc514c0a5c09a1a09796ed890857b4 /mtl.c | |
parent | accfd0b069897c1a07b7ee7dd1f35a345fb76c30 (diff) | |
download | faqe-adbc72e159d48e6b1ad091e6ac19fd1cd6d5f798.tar.gz faqe-adbc72e159d48e6b1ad091e6ac19fd1cd6d5f798.tar.xz faqe-adbc72e159d48e6b1ad091e6ac19fd1cd6d5f798.zip |
Use shaders/data.h to generate material code
There is enough information to generate some of the material loading
code from shaders/data.h.
Diffstat (limited to 'mtl.c')
-rw-r--r-- | mtl.c | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -8,13 +8,14 @@ #include "ensize.h" #include "eprintf.h" +#include "glprog.h" #include "mtl.h" #include "tex.h" struct mtl { char name[50]; - GLuint diff; - GLuint spec; +#define SH_TEX(_, name) GLuint name; +#include "shaders/data.h" }; static struct mtl *mtls; @@ -50,8 +51,8 @@ int mtl_load(char *name) snprintf(m->name, sizeof m->name, "%s", name); - m->diff = tex_file(name, "diff"); - m->spec = tex_file(name, "spec"); +#define SH_TEX(_, n) m->n = tex_file(name, #n); +#include "shaders/data.h" return lmtls++; } @@ -59,13 +60,14 @@ int mtl_load(char *name) void mtl_use(int mtl) { assert(mtl < lmtls); + GLenum texture = GL_TEXTURE0; // TODO: Blank textures or something if (mtl < 0) return; - gl_tex_active(GL_TEXTURE0); - gl_tex_bind(GL_TEXTURE_2D, mtls[mtl].diff); - gl_tex_active(GL_TEXTURE1); - gl_tex_bind(GL_TEXTURE_2D, mtls[mtl].spec); +#define SH_TEX(type, name) \ + gl_tex_active(texture++); \ + gl_tex_bind(GL_TEXTURE_##type, mtls[mtl].name); +#include "shaders/data.h" } |