From 8b1ae9427e8882ced1c957096e046ad2059d5f0d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 1 Oct 2017 23:19:44 +0200 Subject: [PATCH] Create d3d_device_set_render_target --- gfx/common/d3d_common.cpp | 13 +++++++++++++ gfx/common/d3d_common.h | 6 ++++++ gfx/drivers_renderchain/d3d9_cg_renderchain.cpp | 5 +++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/gfx/common/d3d_common.cpp b/gfx/common/d3d_common.cpp index 642224e950..bb60f0cc4b 100644 --- a/gfx/common/d3d_common.cpp +++ b/gfx/common/d3d_common.cpp @@ -563,6 +563,19 @@ void d3d_enable_blend_func(void *data) d3d_set_render_state(dev, D3DRS_ALPHABLENDENABLE, true); } +void d3d_device_set_render_target(LPDIRECT3DDEVICE dev, unsigned idx, + void *data) +{ + LPDIRECT3DSURFACE surf = (LPDIRECT3DSURFACE)data; +#if defined(HAVE_D3D9) && !defined(__cplusplus) + IDirect3DDevice9_SetRenderTarget(dev, idx, surf); +#elif defined(HAVE_D3D8) && !defined(__cplusplus) + IDirect3DDevice8_SetRenderTarget(dev, idx, surf); +#else + dev->SetRenderTarget(idx, surf); +#endif +} + void d3d_enable_alpha_blend_texture_func(void *data) { LPDIRECT3DDEVICE dev = (LPDIRECT3DDEVICE)data; diff --git a/gfx/common/d3d_common.h b/gfx/common/d3d_common.h index 18abb577e8..deb5b31e9d 100644 --- a/gfx/common/d3d_common.h +++ b/gfx/common/d3d_common.h @@ -113,8 +113,14 @@ void d3d_surface_free(void *data); bool d3d_device_get_render_target(LPDIRECT3DDEVICE dev, unsigned idx, void **data); +void d3d_device_set_render_target(LPDIRECT3DDEVICE dev, unsigned idx, + void *data); + void d3d_set_render_state(void *data, D3DRENDERSTATETYPE state, DWORD value); +void d3d_device_set_render_target(LPDIRECT3DDEVICE dev, unsigned idx, + void *data); + bool d3d_reset(LPDIRECT3DDEVICE dev, D3DPRESENT_PARAMETERS *d3dpp); void d3d_device_free(LPDIRECT3DDEVICE dev, LPDIRECT3D pd3d); diff --git a/gfx/drivers_renderchain/d3d9_cg_renderchain.cpp b/gfx/drivers_renderchain/d3d9_cg_renderchain.cpp index 60c7098147..94e647a807 100644 --- a/gfx/drivers_renderchain/d3d9_cg_renderchain.cpp +++ b/gfx/drivers_renderchain/d3d9_cg_renderchain.cpp @@ -1424,7 +1424,8 @@ static bool d3d9_cg_renderchain_render( Pass *to_pass = (Pass*)&chain->passes[i + 1]; to_pass->tex->GetSurfaceLevel(0, &target); - d3dr->SetRenderTarget(0, target); + + d3d_device_set_render_target(d3dr, 0, (void*)target); d3d9_cg_renderchain_convert_geometry(chain, &from_pass->info, &out_width, &out_height, @@ -1459,7 +1460,7 @@ static bool d3d9_cg_renderchain_render( } /* Final pass */ - d3dr->SetRenderTarget(0, back_buffer); + d3d_device_set_render_target(d3dr, 0, (void*)back_buffer); last_pass = (Pass*)&chain->passes.back();