#include "camera.h"
#include "framebuffer.h"
#include "renderable.h"
+#include "renderer.h"
#include "view.h"
using namespace std;
window(w),
context(c),
target(Framebuffer::system()),
+ camera(0),
content(0)
{
window.signal_resize.connect(sigc::mem_fun(this, &View::window_resized));
+ window_resized(window.get_width(), window.get_height());
}
-void View::set_content(const Renderable *r)
+void View::set_camera(Camera *c)
+{
+ camera = c;
+ if(camera)
+ camera->set_aspect(static_cast<float>(window.get_width())/window.get_height());
+}
+
+void View::set_content(Renderable *r)
{
content = r;
}
{
target.clear(COLOR_BUFFER_BIT|DEPTH_BUFFER_BIT);
if(content)
- content->render();
+ {
+ Renderer renderer(camera);
+ content->setup_frame(renderer);
+ content->render(renderer);
+ content->finish_frame();
+ }
context.swap_buffers();
}
{
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);
}