#include "renderbuffer.h"
#include "renderer.h"
#include "sequence.h"
-#include "tests.h"
#include "texture2d.h"
#include "view.h"
if(tag.id)
return;
- const Framebuffer *out_fbo = Framebuffer::current();
- // These are no-ops but will ensure the related state gets restored
- BindRestore restore_fbo(out_fbo);
+ Renderer::Push _push(renderer);
+
+ const Framebuffer *out_fbo = renderer.get_framebuffer();
if(target[0])
{
- Framebuffer &fbo = (samples ? target_ms : target[0])->get_framebuffer();
- fbo.bind();
- fbo.clear();
+ renderer.set_framebuffer(&(samples ? target_ms : target[0])->get_framebuffer());
+ renderer.clear();
}
for(vector<Step>::const_iterator i=steps.begin(); i!=steps.end(); ++i)
{
- Renderer::Push push(renderer);
+ Renderer::Push _push2(renderer);
renderer.set_depth_test(&i->get_depth_test());
renderer.set_stencil_test(&i->get_stencil_test());
if(target[0])
{
+ if(samples)
+ renderer.resolve_multisample(target[0]->get_framebuffer(), COLOR_BUFFER_BIT|DEPTH_BUFFER_BIT);
+
renderer.set_depth_test(0);
renderer.set_stencil_test(0);
renderer.set_blend(0);
- if(samples)
- target[0]->blit_from(*target_ms);
-
for(unsigned i=0; i<postproc.size(); ++i)
{
unsigned j = i%2;
- if(i+1<postproc.size())
- target[1-j]->get_framebuffer().bind();
- else
- out_fbo->bind();
+ renderer.set_framebuffer(i+1<postproc.size() ? &target[1-j]->get_framebuffer() : out_fbo);
const Texture2D &color = target[j]->get_target_texture(RENDER_COLOR);
const Texture2D &depth = target[j]->get_target_texture(RENDER_DEPTH);
postproc[i].postproc->render(renderer, color, depth);
void Sequence::Step::set_clipping(const Clipping *c)
{
- clipping =c;
+ clipping = c;
}
} // namespace GL