]> git.tdb.fi Git - libs/gl.git/blob - source/render/view.cpp
Require explicit begin() and end() calls in Renderer
[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 {
11         delete internal_renderer;
12 }
13
14 void View::set_camera(Camera *c)
15 {
16         camera = c;
17         if(camera)
18                 camera->set_aspect_ratio(get_aspect_ratio());
19 }
20
21 void View::set_content(Renderable *r)
22 {
23         content = r;
24 }
25
26 void View::render()
27 {
28         if(!internal_renderer)
29                 internal_renderer = new Renderer;
30         internal_renderer->begin();
31         render(*internal_renderer);
32         internal_renderer->end();
33 }
34
35 void View::render(Renderer &renderer)
36 {
37         Renderer::Push _push(renderer);
38         renderer.set_framebuffer(&get_target());
39         if(content)
40         {
41                 if(camera)
42                         renderer.set_camera(*camera);
43                 content->setup_frame(renderer);
44                 content->render(renderer);
45                 content->finish_frame();
46         }
47 }
48
49 } // namespace GL
50 } // namespace Msp