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;
void View::render()
{
- Renderer renderer;
- render(renderer);
+ if(!internal_renderer)
+ internal_renderer = new Renderer;
+ render(*internal_renderer);
}
void View::render(Renderer &renderer)
{
Bind bind_fbo(target);
- target.clear(COLOR_BUFFER_BIT|DEPTH_BUFFER_BIT);
+ target.clear();
if(content)
{
Renderer::Push push(renderer);
- renderer.set_camera(*camera);
+ if(camera)
+ renderer.set_camera(*camera);
content->setup_frame(renderer);
content->render(renderer);
content->finish_frame();
+ renderer.flush_shader_data();
}
}