]> git.tdb.fi Git - libs/gl.git/blobdiff - source/view.cpp
Associate camera and setup/finish_frame calls with View
[libs/gl.git] / source / view.cpp
index 47411998f8359b6ca12fe4b93f58f99c032438fb..6548c7f1e98fd9d38168de8579ad5f5ade983b86 100644 (file)
@@ -1,6 +1,7 @@
 #include "camera.h"
 #include "framebuffer.h"
 #include "renderable.h"
+#include "renderer.h"
 #include "view.h"
 
 using namespace std;
@@ -17,6 +18,11 @@ View::View(Graphics::Window &w, Graphics::GLContext &c):
        window.signal_resize.connect(sigc::mem_fun(this, &View::window_resized));
 }
 
+void View::set_camera(Camera *c)
+{
+       camera = c;
+}
+
 void View::set_content(const Renderable *r)
 {
        content = r;
@@ -32,7 +38,12 @@ void View::render()
 {
        target.clear(COLOR_BUFFER_BIT|DEPTH_BUFFER_BIT);
        if(content)
-               content->render();
+       {
+               Renderer renderer(camera);
+               content->setup_frame();
+               content->render(renderer);
+               content->finish_frame();
+       }
        context.swap_buffers();
 }
 
@@ -40,6 +51,8 @@ void View::window_resized(unsigned w, unsigned h)
 {
        target.viewport(0, 0, w, h);
        float aspect = static_cast<float>(w)/h;
+       if(camera)
+               camera->set_aspect(aspect);
        for(list<Camera *>::iterator i=synced_cameras.begin(); i!=synced_cameras.end(); ++i)
                (*i)->set_aspect(aspect);
 }