#ifndef MSP_GL_VIEW_H_
#define MSP_GL_VIEW_H_
-#include <list>
#include "framebuffer.h"
namespace Msp {
class Renderer;
/**
-Manages the presentation of rendering results on the screen.
+An ultimate render target, which is typically visible to the user of the
+application in some way.
+
+The content renderable's render() function is called with an empty tag. A
+Sequence can be used to specify other tags and add post-processing.
*/
-class View: public sigc::trackable
+class View
{
protected:
- Framebuffer ⌖
Camera *camera;
Renderable *content;
Renderer *internal_renderer;
- View(Framebuffer &);
+ View();
public:
virtual ~View();
- virtual unsigned get_width() const { return target.get_width(); }
- virtual unsigned get_height() const { return target.get_height(); }
+ virtual unsigned get_width() const { return get_target().get_width(); }
+ virtual unsigned get_height() const { return get_target().get_height(); }
float get_aspect_ratio() const { return static_cast<float>(get_width())/get_height(); }
+ /** Sets the camera to render with. The camera's aspect ratio is set to
+ match that of the view. */
void set_camera(Camera *);
+
void set_content(Renderable *);
virtual void render();
virtual void render(Renderer &);
+protected:
+ virtual const Framebuffer &get_target() const = 0;
};
} // namespace GL