+++ /dev/null
-#ifndef RENDERTARGET_H_
-#define RENDERTARGET_H_
-
-#include "framebuffer.h"
-#include "texture2d.h"
-
-namespace Msp {
-namespace GL {
-
-enum RenderOutput
-{
- RENDER_COLOR = 0|3,
- RENDER_DEPTH = 192|12
-};
-
-class RenderTargetFormat
-{
-private:
- enum { MAX_OUTPUTS = 7 };
-
- unsigned char count;
- unsigned char outputs[MAX_OUTPUTS];
-
-public:
- RenderTargetFormat();
- RenderTargetFormat(RenderOutput);
-
- RenderTargetFormat operator,(RenderOutput) const;
- RenderTargetFormat operator,(PixelFormat) const;
-
- bool empty() const { return !count; }
- const unsigned char *begin() const { return outputs; }
- const unsigned char *end() const { return outputs+count; }
- int index(RenderOutput) const;
-};
-
-inline RenderTargetFormat operator,(RenderOutput o1, RenderOutput o2)
-{ return (RenderTargetFormat(o1), o2); }
-
-inline RenderTargetFormat operator,(RenderOutput o, PixelFormat f)
-{ return (RenderTargetFormat(o), f); }
-
-inline unsigned get_output_type(unsigned char o)
-{ return o>>4; }
-
-PixelFormat get_output_pixelformat(unsigned char);
-
-
-class RenderTarget
-{
-private:
- union TargetBuffer
- {
- Texture2D *texture;
- Renderbuffer *buffer;
- };
-
- unsigned width;
- unsigned height;
- unsigned samples;
- RenderTargetFormat format;
- std::vector<TargetBuffer> buffers;
- Framebuffer fbo;
-
-public:
- RenderTarget(unsigned, unsigned, RenderOutput);
- RenderTarget(unsigned, unsigned, const RenderTargetFormat & = (RENDER_COLOR, RENDER_DEPTH));
- RenderTarget(unsigned, unsigned, unsigned, const RenderTargetFormat & = (RENDER_COLOR, RENDER_DEPTH));
-private:
- RenderTarget(const RenderTarget &);
- RenderTarget &operator=(const RenderTarget &);
- void init(unsigned, unsigned, unsigned, const RenderTargetFormat &);
-public:
- ~RenderTarget();
-
- unsigned get_width() const { return width; }
- unsigned get_height() const { return height; }
- const RenderTargetFormat &get_format() const { return format; }
- Framebuffer &get_framebuffer() { return fbo; }
- void set_texture_filter(TextureFilter);
- const Texture2D &get_target_texture(unsigned) const;
- const Texture2D &get_target_texture(RenderOutput) const;
- void blit_from(const RenderTarget &);
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif