X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fcommands_backend.cpp;h=0a4416c69814bea21aa00fda272c09642743e55f;hp=76469ab395be70ef4da6c8273eacf9604af91159;hb=94cadd1618f93239b1cb0acbd4f958257c035c98;hpb=d01902f355b1ea9a038a7f96cab37e49c6b65419 diff --git a/source/backends/opengl/commands_backend.cpp b/source/backends/opengl/commands_backend.cpp index 76469ab3..0a4416c6 100644 --- a/source/backends/opengl/commands_backend.cpp +++ b/source/backends/opengl/commands_backend.cpp @@ -90,33 +90,32 @@ void OpenGLCommands::dispatch(unsigned count_x, unsigned count_y, unsigned count glDispatchCompute(count_x, count_y, count_z); } -void OpenGLCommands::resolve_multisample(Framebuffer &target) +void OpenGLCommands::resolve_multisample() { - const Framebuffer *source = (pipeline_state ? pipeline_state->get_framebuffer() : 0); - if(!source) - throw invalid_operation("OpenGLCommands::draw"); + const Framebuffer *framebuffer = (pipeline_state ? pipeline_state->get_framebuffer() : 0); + if(!framebuffer) + throw invalid_operation("OpenGLCommands::resolve_multisample"); static Require _req(EXT_framebuffer_blit); - unsigned width = min(source->get_width(), target.get_width()); - unsigned height = min(source->get_height(), target.get_height()); - unsigned buffers = get_gl_buffer_bits(source->get_format())&get_gl_buffer_bits(target.get_format()); + unsigned width = framebuffer->get_width(); + unsigned height = framebuffer->get_height(); + unsigned buffers = get_gl_buffer_bits(framebuffer->get_format()); if(ARB_direct_state_access) { - target.refresh(); - glBlitNamedFramebuffer(source->id, target.id, 0, 0, width, height, 0, 0, width, height, buffers, GL_NEAREST); + framebuffer->refresh(); + glBlitNamedFramebuffer(framebuffer->id, framebuffer->resolve_id, 0, 0, width, height, 0, 0, width, height, buffers, GL_NEAREST); } else { - glBindFramebuffer(GL_READ_FRAMEBUFFER, source->id); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, target.id); + glBindFramebuffer(GL_FRAMEBUFFER, framebuffer->id); - target.refresh(); + framebuffer->refresh(); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer->resolve_id); glBlitFramebuffer(0, 0, width, height, 0, 0, width, height, buffers, GL_NEAREST); - - glBindFramebuffer(GL_FRAMEBUFFER, source->id); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer->id); } }