From ab5632088936742a458e8ff94684cfffb9543525 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 16 May 2011 16:12:41 -0400 Subject: [PATCH] pass uniforms to texture program correctly --- wfobj-view.cc | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/wfobj-view.cc b/wfobj-view.cc index bc30852..6c4c2b0 100644 --- a/wfobj-view.cc +++ b/wfobj-view.cc @@ -205,14 +205,6 @@ void Viewer::display() it++) { WFObj::Material & m = it->second; - if (m.flags & WFObj::Material::SHININESS_BIT) - glUniform1f(m_shininess_loc, m.shininess); - if (m.flags & WFObj::Material::AMBIENT_BIT) - glUniform4fv(m_ambient_loc, 1, &m.ambient[0]); - if (m.flags & WFObj::Material::DIFFUSE_BIT) - glUniform4fv(m_diffuse_loc, 1, &m.diffuse[0]); - if (m.flags & WFObj::Material::SPECULAR_BIT) - glUniform4fv(m_specular_loc, 1, &m.specular[0]); if (m.flags & WFObj::Material::TEXTURE_BIT) { if (program != m_tex_program) @@ -231,6 +223,32 @@ void Viewer::display() glDisableVertexAttribArray(LOC_TEXTURE); } } + if (m.flags & WFObj::Material::SHININESS_BIT) + { + if (program == m_tex_program) + glUniform1f(m_tex_shininess_loc, m.shininess); + else + glUniform1f(m_shininess_loc, m.shininess); + } + if (m.flags & WFObj::Material::AMBIENT_BIT) + { + if (program == m_tex_program) + glUniform4fv(m_tex_ambient_loc, 1, &m.ambient[0]); + else + glUniform4fv(m_ambient_loc, 1, &m.ambient[0]); + } + if (m.flags & WFObj::Material::DIFFUSE_BIT) + { + if (program != m_tex_program) + glUniform4fv(m_diffuse_loc, 1, &m.diffuse[0]); + } + if (m.flags & WFObj::Material::SPECULAR_BIT) + { + if (program == m_tex_program) + glUniform4fv(m_tex_specular_loc, 1, &m.specular[0]); + else + glUniform4fv(m_specular_loc, 1, &m.specular[0]); + } glDrawElements(GL_TRIANGLES, m.num_vertices, GL_UNSIGNED_SHORT, (GLvoid *) (sizeof(GLushort) * m.first_vertex));