]> git.tdb.fi Git - libs/gl.git/blobdiff - source/view.cpp
Remove the deprecated ProgramBuilder class
[libs/gl.git] / source / view.cpp
index f531905f59e1ae387908538c4198489f27fa79ad..d0d3542835448352f66be17d6f15f4735253c263 100644 (file)
@@ -6,17 +6,23 @@
 namespace Msp {
 namespace GL {
 
-View::View():
-       target(Framebuffer::system()),
+View::View(Framebuffer &t):
+       target(t),
        camera(0),
-       content(0)
+       content(0),
+       internal_renderer(0)
 { }
 
+View::~View()
+{
+       delete internal_renderer;
+}
+
 void View::set_camera(Camera *c)
 {
        camera = c;
        if(camera)
-               camera->set_aspect(get_aspect());
+               camera->set_aspect_ratio(get_aspect_ratio());
 }
 
 void View::set_content(Renderable *r)
@@ -24,21 +30,26 @@ void View::set_content(Renderable *r)
        content = r;
 }
 
-void View::synchronize_camera_aspect(Camera &c)
+void View::render()
 {
-       synced_cameras.push_back(&c);
-       c.set_aspect(get_aspect());
+       if(!internal_renderer)
+               internal_renderer = new Renderer;
+       render(*internal_renderer);
 }
 
-void View::render()
+void View::render(Renderer &renderer)
 {
-       target.clear(COLOR_BUFFER_BIT|DEPTH_BUFFER_BIT);
+       Bind bind_fbo(target);
+       target.clear();
        if(content)
        {
-               Renderer renderer(camera);
+               Renderer::Push push(renderer);
+               if(camera)
+                       renderer.set_camera(*camera);
                content->setup_frame(renderer);
                content->render(renderer);
                content->finish_frame();
+               renderer.flush_shader_data();
        }
 }