From 9a483990a2edd2eacb1a646a8bf54267ed1663c1 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Fri, 15 Jul 2011 12:42:16 -0400 Subject: [PATCH] read the GL uniform locations --- src/Engine.cc | 20 ++++++++++++++++++++ src/Engine.h | 4 ---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/Engine.cc b/src/Engine.cc index ede1072..ea3517b 100644 --- a/src/Engine.cc +++ b/src/Engine.cc @@ -158,6 +158,7 @@ Engine::Engine(const string & path, AV & av) registerLibraries(); + { const char *obj_v_src = (const char *) getFile("shaders/obj.vp", NULL); const char *obj_f_src = (const char *) getFile("shaders/obj.fp", NULL); const static guAttribBinding obj_bindings[] = { @@ -175,6 +176,17 @@ Engine::Engine(const string & path, AV & av) m_programs[PROG_OBJ] = 0; cerr << "Error: Could not obtain 'obj' shader sources" << endl; } + guUniformLocation uniforms_obj[] = { + {&m_uniforms_obj[UNIFORM_OBJ_AMBIENT], "ambient"}, + {&m_uniforms_obj[UNIFORM_OBJ_DIFFUSE], "diffuse"}, + {&m_uniforms_obj[UNIFORM_OBJ_SPECULAR], "specular"}, + {&m_uniforms_obj[UNIFORM_OBJ_SHININESS], "shininess"}, + {NULL, NULL} + }; + guGetUniformLocations(m_programs[PROG_OBJ], uniforms_obj); + } + + { const char *obj_tex_v_src = (const char *) getFile("shaders/obj_tex.vp", NULL); const char *obj_tex_f_src = @@ -195,6 +207,14 @@ Engine::Engine(const string & path, AV & av) m_programs[PROG_OBJ_TEX] = 0; cerr << "Error: Could not obtain 'obj_tex' shader sources" << endl; } + guUniformLocation uniforms_obj_tex[] = { + {&m_uniforms_obj_tex[UNIFORM_OBJ_TEX_AMBIENT], "ambient"}, + {&m_uniforms_obj_tex[UNIFORM_OBJ_TEX_SPECULAR], "specular"}, + {&m_uniforms_obj_tex[UNIFORM_OBJ_TEX_SHININESS], "shininess"}, + {NULL, NULL} + }; + guGetUniformLocations(m_programs[PROG_OBJ_TEX], uniforms_obj_tex); + } } Engine::~Engine() diff --git a/src/Engine.h b/src/Engine.h index 7776f2f..952d8f0 100644 --- a/src/Engine.h +++ b/src/Engine.h @@ -372,8 +372,6 @@ class Engine enum { PROG_OBJ, PROG_OBJ_TEX, PROG_COUNT }; GLuint m_programs[PROG_COUNT]; enum { - UNIFORM_OBJ_PROJECTION, - UNIFORM_OBJ_MODELVIEW, UNIFORM_OBJ_AMBIENT, UNIFORM_OBJ_DIFFUSE, UNIFORM_OBJ_SPECULAR, @@ -387,8 +385,6 @@ class Engine }; GLint m_uniforms_obj[UNIFORM_OBJ_COUNT]; enum { - UNIFORM_OBJ_TEX_PROJECTION, - UNIFORM_OBJ_TEX_MODELVIEW, UNIFORM_OBJ_TEX_AMBIENT, UNIFORM_OBJ_TEX_SPECULAR, UNIFORM_OBJ_TEX_SHININESS,