]> git.tdb.fi Git - libs/gl.git/blobdiff - demos/shaders.cpp
Restructure ProgramData to support sharing between Programs
[libs/gl.git] / demos / shaders.cpp
index b7f2a1961cabdc8707fd71a5ef46914d787d9126..ae5c98fbb727cd42e4259a44d446148dc9b56d47 100644 (file)
@@ -65,7 +65,6 @@ int main()
        mat.set_specular(GL::Color(0.45, 0.5, 0.4));
        mat.set_shininess(50);
        vector<GL::Program *> programs;
-       vector<GL::ProgramData *> progdata;
        for(unsigned i=0; i<12; ++i)
        {
                GL::Program::StandardFeatures feat;
@@ -80,13 +79,12 @@ int main()
                        programs.back()->bind_attribute(4, "tangent");
                        programs.back()->bind_attribute(5, "binormal");
                        programs.back()->link();
-                       progdata.push_back(new GL::ProgramData(*programs.back()));
-                       progdata.back()->uniform("normalmap", 1);
                }
-               else
-                       progdata.push_back(0);
        }
 
+       GL::ProgramData progdata;
+       progdata.uniform("normalmap", 1);
+
        GL::Lighting lighting;
        GL::Light light;
        light.set_position(GL::Vector4(0, 2, 3, 0));
@@ -117,7 +115,7 @@ int main()
                        for(unsigned i=0; i<12; ++i)
                        {
                                GL::MatrixStack::Push push(renderer.matrix_stack());
-                               renderer.set_shader(programs[i], progdata[i]);
+                               renderer.set_shader(programs[i], &progdata);
                                renderer.matrix_stack() *= GL::Matrix::translation(-3.3+(i%4)*2.2, 0, -3.5+(i/4)*3.0);
                                renderer.matrix_stack() *= GL::Matrix::rotation(angle, 0, 0, 1);
                                mesh.draw(renderer);