1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-14 22:03:27 +01:00

only create opengl core context once

This commit is contained in:
FunkyFr3sh 2024-08-03 08:22:50 +02:00
parent bb08a08af0
commit 798c281453

View File

@ -41,6 +41,44 @@ BOOL ogl_create()
g_ogl.hwnd = g_ddraw.hwnd;
g_ogl.hdc = g_ddraw.render.hdc;
GLenum err = GL_NO_ERROR;
BOOL made_current = FALSE;
for (int i = 0; i < 5; i++)
{
if ((made_current = xwglMakeCurrent(g_ogl.hdc, g_ogl.context)))
break;
Sleep(50);
}
if (made_current && (err = glGetError()) == GL_NO_ERROR)
{
GL_CHECK(oglu_init());
TRACE("+--OpenGL-----------------------------------------\n");
TRACE("| GL_VERSION: %s\n", glGetString(GL_VERSION));
TRACE("| GL_VENDOR: %s\n", glGetString(GL_VENDOR));
TRACE("| GL_RENDERER: %s\n", glGetString(GL_RENDERER));
TRACE("| GL_SHADING_LANGUAGE_VERSION: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
TRACE("+------------------------------------------------\n");
GL_CHECK(g_ogl.context = ogl_create_core_context(g_ogl.hdc));
}
else
{
TRACE("OpenGL error %08x, GetLastError %lu (xwglMakeCurrent())\n", err, GetLastError());
ogl_check_error("xwglMakeCurrent()");
}
for (int i = 0; i < 5; i++)
{
if (xwglMakeCurrent(NULL, NULL))
break;
Sleep(50);
}
return TRUE;
}
@ -69,15 +107,6 @@ DWORD WINAPI ogl_render_main(void)
{
GL_CHECK(oglu_init());
TRACE("+--OpenGL-----------------------------------------\n");
TRACE("| GL_VERSION: %s\n", glGetString(GL_VERSION));
TRACE("| GL_VENDOR: %s\n", glGetString(GL_VENDOR));
TRACE("| GL_RENDERER: %s\n", glGetString(GL_RENDERER));
TRACE("| GL_SHADING_LANGUAGE_VERSION: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
TRACE("+------------------------------------------------\n");
GL_CHECK(g_ogl.context = ogl_create_core_context(g_ogl.hdc));
BOOL got_swap_ctrl;
GL_CHECK(got_swap_ctrl = oglu_ext_exists("WGL_EXT_swap_control", g_ogl.hdc));
@ -108,7 +137,13 @@ DWORD WINAPI ogl_render_main(void)
ogl_check_error("xwglMakeCurrent()");
}
xwglMakeCurrent(NULL, NULL);
for (int i = 0; i < 5; i++)
{
if (xwglMakeCurrent(NULL, NULL))
break;
Sleep(50);
}
if (!g_ogl.use_opengl)
{