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
}
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)
{
LPDIRECT3DDEVICE dev = (LPDIRECT3DDEVICE)data;
@ -427,9 +439,9 @@ void d3d_enable_blend_func(void *data)
if (!d3d_restore_device(dev))
return;
dev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
dev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
d3d_render_state(dev, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
d3d_render_state(dev, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
d3d_render_state(dev, D3DRS_ALPHABLENDENABLE, true);
}
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))
return;
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
d3d_render_state(dev, D3DRS_ALPHABLENDENABLE, false);
}
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_set_render_state(void *data, D3DRENDERSTATETYPE state, DWORD value);
#ifdef __cplusplus
}
#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_v(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
#ifdef _XBOX1
d3dr->SetRenderState(D3DRS_LIGHTING, FALSE);
d3d_set_render_state(d3dr, D3DRS_LIGHTING, 0);
#endif
d3dr->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
d3dr->SetRenderState(D3DRS_ZENABLE, FALSE);
d3d_set_render_state(d3dr, D3DRS_CULLMODE, D3DCULL_NONE);
d3d_set_render_state(d3dr, D3DRS_ZENABLE, FALSE);
if (!xdk_renderchain_init_shader_fvf(chain, chain))
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;
#ifdef _XBOX
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
unsigned d3d_interval = interval ?
D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
d3dr->SetRenderState(XBOX_PRESENTATIONINTERVAL, d3d_interval);
d3d_render_state(d3d->dev, XBOX_PRESENTATIONINTERVAL, d3d_interval);
#else
d3d_restore(d3d);
#endif