#include "renderer.h"
#include "tests.h"
#include "texture2d.h"
+#include "view.h"
using namespace std;
namespace Msp {
namespace GL {
-Pipeline::Pipeline(unsigned w, unsigned h, bool d):
- camera(0),
- width(w),
- height(h),
- hdr(d),
- samples(0),
- target_ms(0)
+Pipeline::Pipeline(unsigned w, unsigned h, bool d)
{
+ init(w, h);
+ hdr = d;
+}
+
+Pipeline::Pipeline(const View &view)
+{
+ init(view.get_width(), view.get_height());
+}
+
+void Pipeline::init(unsigned w, unsigned h)
+{
+ camera = 0;
+ width = w;
+ height = h;
+ hdr = false;
+ samples = 0;
+ target_ms = 0;
target[0] = 0;
target[1] = 0;
}
void Pipeline::add_postprocessor(PostProcessor &pp)
{
- postproc.push_back(&pp);
+ add_postprocessor(&pp, true);
+}
+
+void Pipeline::add_postprocessor_owned(PostProcessor *pp)
+{
+ add_postprocessor(pp, false);
+}
+
+void Pipeline::add_postprocessor(PostProcessor *pp, bool keep)
+{
+ postproc.push_back(pp);
+ if(keep)
+ postproc.back().keep();
try
{
create_targets(0);
fbo.clear(COLOR_BUFFER_BIT|DEPTH_BUFFER_BIT);
}
-
for(PassList::const_iterator i=passes.begin(); i!=passes.end(); ++i)
{
if(const DepthTest *dt = i->get_depth_test())