From 0cd7f50e11d89311762ae062bb1cfa876a317353 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Mon, 22 Oct 2018 01:41:32 +0300 Subject: use shaders/data.h for the definition of vertices Now that shaders/data.h is in place, it can be taken to the next extreme. The information stored in shaders/data.h is plentiful enough that vertex attribute location information can be standardised, the definition of vertices can be specified in only one place and the bindings for vertex information can be generated. It's around this point in time that I wish there was a better pre-processor for all this. It might make things a lot cleaner. --- model.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'model.c') diff --git a/model.c b/model.c index 88931c0..1f07201 100644 --- a/model.c +++ b/model.c @@ -5,6 +5,7 @@ #include #include "eprintf.h" +#include "glprog.h" #include "linmath.h" #include "model.h" #include "nelem.h" @@ -30,12 +31,11 @@ void model_load(struct model *mdl, const struct fmd *fmd) gl_buf_data(GL_ELEMENT_ARRAY_BUFFER, fmd->ntris * sizeof *fmd->tris, fmd->tris, GL_STATIC_DRAW); v = &fmd->verts[0]; - gl_va_define(0, NELEM(v->pos), GL_FLOAT, GL_FALSE, sizeof *v, (void *)offsetof(struct vertex, pos)); - gl_va_enable(0); - gl_va_define(1, NELEM(v->norm), GL_FLOAT, GL_FALSE, sizeof *v, (void *)offsetof(struct vertex, norm)); - gl_va_enable(1); - gl_va_define(2, NELEM(v->uv), GL_FLOAT, GL_FALSE, sizeof *v, (void *)offsetof(struct vertex, uv)); - gl_va_enable(2); + +#define SH_IN(_0, name) \ + gl_va_define(prog.attr.name, NELEM(v->name), GL_FLOAT, GL_FALSE, sizeof *v, (void *)offsetof(struct vertex, name)); \ + gl_va_enable(prog.attr.name); +#include "shaders/data.h" // TODO: materials, use a shared material set -- cgit v1.2.3-54-g00ecf