1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

#111 clear multiple times with opengl

This commit is contained in:
FunkyFr3sh 2021-08-05 17:18:36 +02:00
parent aed6deb4ff
commit 062f622ecd

View File

@ -548,6 +548,7 @@ static void ogl_init_scale_program()
static void ogl_render()
{
BOOL needs_update = FALSE;
LONG clear_count = 0;
glViewport(
g_ddraw->render.viewport.x, g_ddraw->render.viewport.y,
@ -578,6 +579,9 @@ static void ogl_render()
BOOL scale_changed = FALSE;
if (InterlockedExchange(&g_ddraw->render.clear_screen, FALSE))
clear_count = 10;
fpsl_frame_start();
EnterCriticalSection(&g_ddraw->cs);
@ -652,17 +656,11 @@ static void ogl_render()
if (error_check_count < 20)
{
glClear(GL_COLOR_BUFFER_BIT);
error_check_count++;
if (glGetError() != GL_NO_ERROR)
g_ogl.use_opengl = FALSE;
}
else if (g_ddraw->wine || InterlockedExchange(&g_ddraw->render.clear_screen, FALSE))
{
glClear(GL_COLOR_BUFFER_BIT);
}
g_ddraw->child_window_exists = FALSE;
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
@ -692,6 +690,16 @@ static void ogl_render()
LeaveCriticalSection(&g_ddraw->cs);
if (g_ddraw->wine)
{
glClear(GL_COLOR_BUFFER_BIT);
}
else if (clear_count > 0)
{
clear_count--;
glClear(GL_COLOR_BUFFER_BIT);
}
if (scale_changed)
{
if (g_ogl.scale_program && g_ogl.main_program)