Don't reset the viewport unless you have to.
This commit is contained in:
parent
2a4134c20a
commit
a6be4e7267
1 changed files with 27 additions and 19 deletions
|
@ -704,7 +704,6 @@ static int
|
||||||
D3D_RenderClear(SDL_Renderer * renderer)
|
D3D_RenderClear(SDL_Renderer * renderer)
|
||||||
{
|
{
|
||||||
D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata;
|
D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata;
|
||||||
D3DVIEWPORT9 viewport;
|
|
||||||
DWORD color;
|
DWORD color;
|
||||||
HRESULT result;
|
HRESULT result;
|
||||||
|
|
||||||
|
@ -712,6 +711,16 @@ D3D_RenderClear(SDL_Renderer * renderer)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
color = D3DCOLOR_ARGB(renderer->a, renderer->r, renderer->g, renderer->b);
|
||||||
|
|
||||||
|
/* Don't reset the viewport if we don't have to! */
|
||||||
|
if (!renderer->viewport.x && !renderer->viewport.y &&
|
||||||
|
renderer->viewport.w == data->pparams.BackBufferWidth &&
|
||||||
|
renderer->viewport.h == data->pparams.BackBufferHeight) {
|
||||||
|
result = IDirect3DDevice9_Clear(data->device, 0, NULL, D3DCLEAR_TARGET, color, 0.0f, 0);
|
||||||
|
} else {
|
||||||
|
D3DVIEWPORT9 viewport;
|
||||||
|
|
||||||
/* Clear is defined to clear the entire render target */
|
/* Clear is defined to clear the entire render target */
|
||||||
viewport.X = 0;
|
viewport.X = 0;
|
||||||
viewport.Y = 0;
|
viewport.Y = 0;
|
||||||
|
@ -721,8 +730,6 @@ D3D_RenderClear(SDL_Renderer * renderer)
|
||||||
viewport.MaxZ = 1.0f;
|
viewport.MaxZ = 1.0f;
|
||||||
IDirect3DDevice9_SetViewport(data->device, &viewport);
|
IDirect3DDevice9_SetViewport(data->device, &viewport);
|
||||||
|
|
||||||
color = D3DCOLOR_ARGB(renderer->a, renderer->r, renderer->g, renderer->b);
|
|
||||||
|
|
||||||
result = IDirect3DDevice9_Clear(data->device, 0, NULL, D3DCLEAR_TARGET, color, 0.0f, 0);
|
result = IDirect3DDevice9_Clear(data->device, 0, NULL, D3DCLEAR_TARGET, color, 0.0f, 0);
|
||||||
|
|
||||||
/* Reset the viewport */
|
/* Reset the viewport */
|
||||||
|
@ -733,6 +740,7 @@ D3D_RenderClear(SDL_Renderer * renderer)
|
||||||
viewport.MinZ = 0.0f;
|
viewport.MinZ = 0.0f;
|
||||||
viewport.MaxZ = 1.0f;
|
viewport.MaxZ = 1.0f;
|
||||||
IDirect3DDevice9_SetViewport(data->device, &viewport);
|
IDirect3DDevice9_SetViewport(data->device, &viewport);
|
||||||
|
}
|
||||||
|
|
||||||
if (FAILED(result)) {
|
if (FAILED(result)) {
|
||||||
D3D_SetError("Clear()", result);
|
D3D_SetError("Clear()", result);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue