mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-29 20:27:12 +01:00
direct3d: Be more aggressive about resetting state when textures go away.
Fixes Bugzilla #4768.
This commit is contained in:
parent
a3804ba1da
commit
847bd8d983
@ -234,6 +234,10 @@ D3D_InitRenderState(D3D_RenderData *data)
|
|||||||
D3DMATRIX matrix;
|
D3DMATRIX matrix;
|
||||||
|
|
||||||
IDirect3DDevice9 *device = data->device;
|
IDirect3DDevice9 *device = data->device;
|
||||||
|
IDirect3DDevice9_SetPixelShader(device, NULL);
|
||||||
|
IDirect3DDevice9_SetTexture(device, 0, NULL);
|
||||||
|
IDirect3DDevice9_SetTexture(device, 1, NULL);
|
||||||
|
IDirect3DDevice9_SetTexture(device, 2, NULL);
|
||||||
IDirect3DDevice9_SetFVF(device, D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1);
|
IDirect3DDevice9_SetFVF(device, D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1);
|
||||||
IDirect3DDevice9_SetVertexShader(device, NULL);
|
IDirect3DDevice9_SetVertexShader(device, NULL);
|
||||||
IDirect3DDevice9_SetRenderState(device, D3DRS_ZENABLE, D3DZB_FALSE);
|
IDirect3DDevice9_SetRenderState(device, D3DRS_ZENABLE, D3DZB_FALSE);
|
||||||
@ -708,6 +712,12 @@ D3D_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
|||||||
texturedata->texture.dirty = SDL_TRUE;
|
texturedata->texture.dirty = SDL_TRUE;
|
||||||
if (data->drawstate.texture == texture) {
|
if (data->drawstate.texture == texture) {
|
||||||
data->drawstate.texture = NULL;
|
data->drawstate.texture = NULL;
|
||||||
|
IDirect3DDevice9_SetPixelShader(data->device, NULL);
|
||||||
|
IDirect3DDevice9_SetTexture(data->device, 0, NULL);
|
||||||
|
if (texturedata->yuv) {
|
||||||
|
IDirect3DDevice9_SetTexture(data->device, 1, NULL);
|
||||||
|
IDirect3DDevice9_SetTexture(data->device, 2, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1513,6 +1523,12 @@ D3D_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
|||||||
|
|
||||||
if (renderdata->drawstate.texture == texture) {
|
if (renderdata->drawstate.texture == texture) {
|
||||||
renderdata->drawstate.texture = NULL;
|
renderdata->drawstate.texture = NULL;
|
||||||
|
IDirect3DDevice9_SetPixelShader(renderdata->device, NULL);
|
||||||
|
IDirect3DDevice9_SetTexture(renderdata->device, 0, NULL);
|
||||||
|
if (data->yuv) {
|
||||||
|
IDirect3DDevice9_SetTexture(renderdata->device, 1, NULL);
|
||||||
|
IDirect3DDevice9_SetTexture(renderdata->device, 2, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
|
Loading…
Reference in New Issue
Block a user