Create d3d_set_render_state

This commit is contained in:
twinaphex 2015-11-12 01:28:14 +01:00
parent cb5d4b0569
commit 823e2db596
4 changed files with 22 additions and 9 deletions

View File

@ -418,6 +418,18 @@ void d3d_texture_blit(unsigned pixel_size,
#endif #endif
} }
void d3d_set_render_state(void *data, D3DRENDERSTATETYPE state, DWORD value)
{
LPDIRECT3DDEVICE dev = (LPDIRECT3DDEVICE)data;
if (!dev)
return;
if (!d3d_restore_device(dev))
return;
dev->SetRenderState(state, value);
}
void d3d_enable_blend_func(void *data) void d3d_enable_blend_func(void *data)
{ {
LPDIRECT3DDEVICE dev = (LPDIRECT3DDEVICE)data; LPDIRECT3DDEVICE dev = (LPDIRECT3DDEVICE)data;
@ -427,9 +439,9 @@ void d3d_enable_blend_func(void *data)
if (!d3d_restore_device(dev)) if (!d3d_restore_device(dev))
return; return;
dev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); d3d_render_state(dev, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
dev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); d3d_render_state(dev, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, true); d3d_render_state(dev, D3DRS_ALPHABLENDENABLE, true);
} }
void d3d_enable_alpha_blend_texture_func(void *data) void d3d_enable_alpha_blend_texture_func(void *data)
@ -474,7 +486,7 @@ void d3d_disable_blend_func(void *data)
if (!d3d_restore_device(dev)) if (!d3d_restore_device(dev))
return; return;
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, false); d3d_render_state(dev, D3DRS_ALPHABLENDENABLE, false);
} }
void d3d_set_vertex_declaration(void *data, void *vertex_data) void d3d_set_vertex_declaration(void *data, void *vertex_data)

View File

@ -105,6 +105,8 @@ void d3d_enable_alpha_blend_texture_func(void *data);
void d3d_frame_postprocess(void *data); void d3d_frame_postprocess(void *data);
void d3d_set_render_state(void *data, D3DRENDERSTATETYPE state, DWORD value);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -115,10 +115,10 @@ static bool renderchain_create_first_pass(void *data,
d3d_set_sampler_address_u(d3dr, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); d3d_set_sampler_address_u(d3dr, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
d3d_set_sampler_address_v(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); d3d_set_sampler_address_v(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
#ifdef _XBOX1 #ifdef _XBOX1
d3dr->SetRenderState(D3DRS_LIGHTING, FALSE); d3d_set_render_state(d3dr, D3DRS_LIGHTING, 0);
#endif #endif
d3dr->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); d3d_set_render_state(d3dr, D3DRS_CULLMODE, D3DCULL_NONE);
d3dr->SetRenderState(D3DRS_ZENABLE, FALSE); d3d_set_render_state(d3dr, D3DRS_ZENABLE, FALSE);
if (!xdk_renderchain_init_shader_fvf(chain, chain)) if (!xdk_renderchain_init_shader_fvf(chain, chain))
return false; return false;

View File

@ -309,11 +309,10 @@ static void gfx_ctx_d3d_swap_interval(void *data, unsigned interval)
{ {
d3d_video_t *d3d = (d3d_video_t*)data; d3d_video_t *d3d = (d3d_video_t*)data;
#ifdef _XBOX #ifdef _XBOX
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
unsigned d3d_interval = interval ? unsigned d3d_interval = interval ?
D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE; D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
d3dr->SetRenderState(XBOX_PRESENTATIONINTERVAL, d3d_interval); d3d_render_state(d3d->dev, XBOX_PRESENTATIONINTERVAL, d3d_interval);
#else #else
d3d_restore(d3d); d3d_restore(d3d);
#endif #endif