]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/designer.cpp
Use GL::Renderables and a Pipeline for rendering
[r2c2.git] / source / designer / designer.cpp
index 4763b8fda6294f3d12ff420c1245bb1e6b975dc5..a28811f74fb254f3fa10446b8be5e7213a01ecf4 100644 (file)
@@ -40,7 +40,7 @@ Application::RegApp<Designer> Designer::reg;
 Designer::Designer(int argc, char **argv):
        screen_w(1280),
        screen_h(960),
-       base_mesh(0),
+       base_object(0),
        cur_route(0),
        mode(SELECT),
        input(0),
@@ -86,8 +86,8 @@ Designer::Designer(int argc, char **argv):
 
                if(!layout->get_base().empty())
                {
-                       base_mesh = new GL::Mesh;
-                       DataFile::load(*base_mesh, layout->get_base());
+                       base_object = new GL::Object;
+                       DataFile::load(*base_object, layout->get_base());
                }
        }
 
@@ -126,6 +126,17 @@ int Designer::main()
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        glEnable(GL_CULL_FACE);
 
+       pipeline = new GL::Pipeline(screen_w, screen_h, false);
+       pipeline->add_renderable(layout_3d->get_scene());
+       if(base_object)
+               pipeline->add_renderable(*base_object);
+
+       light.set_position(0, -0.259, 0.966, 0);
+       lighting.attach(0, light);
+
+       GL::PipelinePass *pass = &pipeline->add_pass(GL::Tag());
+       pass->lighting = &lighting;
+
        DataFile::load(ui_res, "marklin.res");
        root = new GLtk::Root(ui_res, *wnd);
 
@@ -569,20 +580,18 @@ void Designer::render()
 {
        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
        GL::enable(GL::DEPTH_TEST);
+       GL::Texture::unbind();
 
        project_3d();
        apply_camera();
        if(mode==CATALOGUE)
-               cat_layout_3d->render();
+               cat_layout_3d->get_scene().render();
        else
        {
-               if(base_mesh)
-               {
-                       GL::Texture::unbind();
-                       base_mesh->draw();
-               }
-               layout_3d->render(true);
-               if(cur_route)
+               pipeline->render_all();
+               layout_3d->get_endpoint_scene().render();
+               GL::enable(GL_CULL_FACE);
+               /*if(cur_route)
                {
                        glColor4f(0.5, 0.8, 1.0, 1.0);
                        const set<const Track *> &rtracks = cur_route->get_tracks();
@@ -598,7 +607,8 @@ void Designer::render()
                                }
                                layout_3d->get_track(**i).render_path(path);
                        }
-               }
+               }*/
+
                manipulator->render();
                if(mode==MEASURE)
                        measure->render();