1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +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.hwnd = g_ddraw.hwnd;
g_ogl.hdc = g_ddraw.render.hdc; 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; return TRUE;
} }
@ -69,15 +107,6 @@ DWORD WINAPI ogl_render_main(void)
{ {
GL_CHECK(oglu_init()); 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; BOOL got_swap_ctrl;
GL_CHECK(got_swap_ctrl = oglu_ext_exists("WGL_EXT_swap_control", g_ogl.hdc)); 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()"); 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) if (!g_ogl.use_opengl)
{ {