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.