]> git.tdb.fi Git - libs/gl.git/blob - source/render/view.cpp
Move WindowView::render to the backend
[libs/gl.git] / source / render / view.cpp
1 #include "camera.h"
2 #include "renderable.h"
3 #include "renderer.h"
4 #include "view.h"
5
6 namespace Msp {
7 namespace GL {
8
9 View::View():
10         camera(0),
11         content(0),
12         internal_renderer(0)
13 { }
14
15 View::~View()
16 {
17         delete internal_renderer;
18 }
19
20 void View::set_camera(Camera *c)
21 {
22         camera = c;
23         if(camera)
24                 camera->set_aspect_ratio(get_aspect_ratio());
25 }
26
27 void View::set_content(Renderable *r)
28 {
29         content = r;
30 }
31
32 void View::render()
33 {
34         if(!internal_renderer)
35                 internal_renderer = new Renderer;
36         render(*internal_renderer);
37         internal_renderer->end();
38 }
39
40 void View::render(Renderer &renderer)
41 {
42         Renderer::Push _push(renderer);
43         renderer.set_framebuffer(&get_target());
44         if(content)
45         {
46                 if(camera)
47                         renderer.set_camera(*camera);
48                 content->setup_frame(renderer);
49                 content->render(renderer);
50                 content->finish_frame();
51         }
52 }
53
54 } // namespace GL
55 } // namespace Msp