From c1450356a7a7c01a607a9031200be0ba9c03b437 Mon Sep 17 00:00:00 2001 From: Matteo Bruni Date: Sat, 7 Aug 2010 15:29:41 +0200 Subject: [PATCH] wined3d: Fix context_apply_clear_state with ORM = backbuffer. --- dlls/wined3d/context.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 93b422837f..72b84c916e 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -1972,7 +1972,7 @@ static void context_apply_draw_buffer(struct wined3d_context *context, BOOL blit { ENTER_GL(); glDrawBuffer(surface_get_gl_buffer(rt)); - checkGLcall("glDrawBuffers()"); + checkGLcall("glDrawBuffer()"); LEAVE_GL(); } else @@ -2172,22 +2172,29 @@ void context_apply_clear_state(struct wined3d_context *context, IWineD3DDeviceIm } else { - const struct wined3d_gl_info *gl_info = context->gl_info; + ENTER_GL(); - for (i = 0; i < gl_info->limits.buffers; ++i) + if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) { - if (i < rt_count && rts[i]) - context->draw_buffers[i] = GL_COLOR_ATTACHMENT0 + i; - else - context->draw_buffers[i] = GL_NONE; + const struct wined3d_gl_info *gl_info = context->gl_info; + for (i = 0; i < gl_info->limits.buffers; ++i) + { + if (i < rt_count && rts[i]) + context->draw_buffers[i] = GL_COLOR_ATTACHMENT0 + i; + else + context->draw_buffers[i] = GL_NONE; + } + GL_EXTCALL(glDrawBuffersARB(gl_info->limits.buffers, context->draw_buffers)); + checkGLcall("glDrawBuffers()"); + context->draw_buffer_dirty = TRUE; + } + else + { + glDrawBuffer(device->offscreenBuffer); + checkGLcall("glDrawBuffer()"); } - ENTER_GL(); - GL_EXTCALL(glDrawBuffersARB(gl_info->limits.buffers, context->draw_buffers)); - checkGLcall("glDrawBuffers()"); LEAVE_GL(); - - context->draw_buffer_dirty = TRUE; } if (context->last_was_blit) -- 2.33.8