From dcecd20d3c29796572c2c30e9b587c5086113945 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 16 Nov 2018 07:02:27 +0100 Subject: [PATCH] don't update vertices/viewport on every frame to improve the performance --- src/render.c | 15 +++++++++++++-- src/render_d3d9.c | 13 ++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/render.c b/src/render.c index eb5cf8c..f446c05 100644 --- a/src/render.c +++ b/src/render.c @@ -652,15 +652,26 @@ static void Render() if (ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height) { + static BOOL needsUpdate; + if (ChildWindowExists) { 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( ddraw->render.viewport.x, ddraw->render.viewport.y, ddraw->render.viewport.width, ddraw->render.viewport.height); + + needsUpdate = FALSE; + } } } } diff --git a/src/render_d3d9.c b/src/render_d3d9.c index e47d6c8..9d0ce77 100644 --- a/src/render_d3d9.c +++ b/src/render_d3d9.c @@ -383,13 +383,20 @@ DWORD WINAPI render_d3d9_main(void) if (ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height) { + static BOOL needsUpdate; + if (ChildWindowExists) { 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); } } }