From b57ec635fcb93f6ac2eef9d920da093b1f9c39a7 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 27 Sep 2024 18:11:07 +0200 Subject: [PATCH] fix opengl renderer on older hardware --- src/opengl_utils.c | 18 +++++++++++++----- src/render_ogl.c | 2 ++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/opengl_utils.c b/src/opengl_utils.c index 8222f10..8062fdd 100644 --- a/src/opengl_utils.c +++ b/src/opengl_utils.c @@ -231,20 +231,28 @@ void oglu_init() BOOL oglu_ext_exists(char* ext, HDC hdc) { + BOOL got_num_extensions = FALSE; + if (glGetIntegerv && glGetStringi) { GLint n = 0; glGetIntegerv(GL_NUM_EXTENSIONS, &n); - for (GLint i = 0; i < n; i++) + if (glGetError() == GL_NO_ERROR) { - char* glext = (char*)glGetStringi(GL_EXTENSIONS, i); + got_num_extensions = TRUE; - if (glext && strcmp(glext, ext) == 0) - return TRUE; + for (GLint i = 0; i < n; i++) + { + char* glext = (char*)glGetStringi(GL_EXTENSIONS, i); + + if (glext && strcmp(glext, ext) == 0) + return TRUE; + } } } - else + + if (!got_num_extensions) { char* glext = (char*)glGetString(GL_EXTENSIONS); diff --git a/src/render_ogl.c b/src/render_ogl.c index be0793e..efde47f 100644 --- a/src/render_ogl.c +++ b/src/render_ogl.c @@ -111,6 +111,8 @@ DWORD WINAPI ogl_render_main(void) { GL_CHECK(oglu_init()); + g_ogl.got_error = g_ogl.got_error || (err = glGetError()) != GL_NO_ERROR; + BOOL got_swap_ctrl; GL_CHECK(got_swap_ctrl = oglu_ext_exists("WGL_EXT_swap_control", g_ogl.hdc));