1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

don't update vertices/viewport on every frame to improve the performance

This commit is contained in:
FunkyFr3sh 2018-11-16 07:02:27 +01:00
parent d45fabe5cd
commit dcecd20d3c
2 changed files with 23 additions and 5 deletions

View File

@ -652,15 +652,26 @@ static void Render()
if (ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height) if (ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height)
{ {
static BOOL needsUpdate;
if (ChildWindowExists) if (ChildWindowExists)
{ {
glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT);
glViewport(0, ddraw->render.height - ddraw->height, ddraw->width, ddraw->height);
if (!needsUpdate)
{
glViewport(0, ddraw->render.height - ddraw->height, ddraw->width, ddraw->height);
needsUpdate = TRUE;
}
} }
else else if (needsUpdate)
{
glViewport( glViewport(
ddraw->render.viewport.x, ddraw->render.viewport.y, ddraw->render.viewport.x, ddraw->render.viewport.y,
ddraw->render.viewport.width, ddraw->render.viewport.height); ddraw->render.viewport.width, ddraw->render.viewport.height);
needsUpdate = FALSE;
}
} }
} }
} }

View File

@ -383,13 +383,20 @@ DWORD WINAPI render_d3d9_main(void)
if (ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height) if (ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height)
{ {
static BOOL needsUpdate;
if (ChildWindowExists) if (ChildWindowExists)
{ {
IDirect3DDevice9_Clear(D3dDev, 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); IDirect3DDevice9_Clear(D3dDev, 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
UpdateVertices(FALSE, FALSE);
if (!needsUpdate && UpdateVertices(FALSE, FALSE))
needsUpdate = TRUE;
}
else if (needsUpdate)
{
if (UpdateVertices(FALSE, TRUE))
needsUpdate = FALSE;
} }
else
UpdateVertices(FALSE, TRUE);
} }
} }
} }