On 12 April 2010 12:44, Roderick Colenbrander <thunderbird2k(a)gmail.com> wrote:
> - context = context_acquire(This, (IWineD3DSurface *)target, CTXUSAGE_CLEAR);
> + if (wined3d_settings.offscreen_rendering_mode == ORM_FBO)
> + {
> + if (!surface_is_offscreen((IWineD3DSurface *)target))
> + {
> + TRACE("Surface %p is onscreen\n", target);
> +
> + context = context_acquire(This, (IWineD3DSurface *)target, CTXUSAGE_RESOURCELOAD);
> + ENTER_GL();
> + context_bind_fbo(context, GL_FRAMEBUFFER, NULL);
> + context_set_draw_buffer(context, surface_get_gl_buffer((IWineD3DSurface *)target));
> + LEAVE_GL();
> + }
> + else
> + {
> + TRACE("Surface %p is offscreen\n", target);
> +
> + context = context_acquire(This, NULL, CTXUSAGE_RESOURCELOAD);
> + ENTER_GL();
> + context_bind_fbo(context, GL_FRAMEBUFFER, &context->dst_fbo);
> + context_attach_surface_fbo(context, GL_FRAMEBUFFER, 0, (IWineD3DSurface *)target);
> + context_attach_depth_stencil_fbo(context, GL_FRAMEBUFFER, NULL, FALSE);
> + LEAVE_GL();
> + }
> + }
> + else
> + {
> + context = context_acquire(This, (IWineD3DSurface *)target, CTXUSAGE_CLEAR);
> + }
> +
That doesn't work of course, CTXUSAGE_CLEAR isn't there just for show.