|
@@ -22,6 +22,7 @@
|
|
|
|
|
|
// CHANGELOG
|
|
// CHANGELOG
|
|
// (minor and older changes stripped away, please see git history for details)
|
|
// (minor and older changes stripped away, please see git history for details)
|
|
|
|
+// 2025-06-04: OpenGL: Made GLES 3.20 contexts not access GL_CONTEXT_PROFILE_MASK nor GL_PRIMITIVE_RESTART. (#8664)
|
|
// 2025-02-18: OpenGL: Lazily reinitialize embedded GL loader for when calling backend from e.g. other DLL boundaries. (#8406)
|
|
// 2025-02-18: OpenGL: Lazily reinitialize embedded GL loader for when calling backend from e.g. other DLL boundaries. (#8406)
|
|
// 2024-10-07: OpenGL: Changed default texture sampler to Clamp instead of Repeat/Wrap.
|
|
// 2024-10-07: OpenGL: Changed default texture sampler to Clamp instead of Repeat/Wrap.
|
|
// 2024-06-28: OpenGL: ImGui_ImplOpenGL3_NewFrame() recreates font texture if it has been destroyed by ImGui_ImplOpenGL3_DestroyFontsTexture(). (#7748)
|
|
// 2024-06-28: OpenGL: ImGui_ImplOpenGL3_NewFrame() recreates font texture if it has been destroyed by ImGui_ImplOpenGL3_DestroyFontsTexture(). (#7748)
|
|
@@ -325,11 +326,6 @@ bool ImGui_ImplOpenGL3_Init(const char* glsl_version)
|
|
if (major == 0 && minor == 0)
|
|
if (major == 0 && minor == 0)
|
|
sscanf(gl_version_str, "%d.%d", &major, &minor); // Query GL_VERSION in desktop GL 2.x, the string will start with "<major>.<minor>"
|
|
sscanf(gl_version_str, "%d.%d", &major, &minor); // Query GL_VERSION in desktop GL 2.x, the string will start with "<major>.<minor>"
|
|
bd->GlVersion = (GLuint)(major * 100 + minor * 10);
|
|
bd->GlVersion = (GLuint)(major * 100 + minor * 10);
|
|
-#if defined(GL_CONTEXT_PROFILE_MASK)
|
|
|
|
- if (bd->GlVersion >= 320)
|
|
|
|
- glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &bd->GlProfileMask);
|
|
|
|
- bd->GlProfileIsCompat = (bd->GlProfileMask & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) != 0;
|
|
|
|
-#endif
|
|
|
|
|
|
|
|
#if defined(IMGUI_IMPL_OPENGL_ES3)
|
|
#if defined(IMGUI_IMPL_OPENGL_ES3)
|
|
bd->GlProfileIsES3 = true;
|
|
bd->GlProfileIsES3 = true;
|
|
@@ -338,6 +334,12 @@ bool ImGui_ImplOpenGL3_Init(const char* glsl_version)
|
|
bd->GlProfileIsES3 = true;
|
|
bd->GlProfileIsES3 = true;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+#if defined(GL_CONTEXT_PROFILE_MASK)
|
|
|
|
+ if (!bd->GlProfileIsES3 && bd->GlVersion >= 320)
|
|
|
|
+ glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &bd->GlProfileMask);
|
|
|
|
+ bd->GlProfileIsCompat = (bd->GlProfileMask & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) != 0;
|
|
|
|
+#endif
|
|
|
|
+
|
|
bd->UseBufferSubData = false;
|
|
bd->UseBufferSubData = false;
|
|
/*
|
|
/*
|
|
// Query vendor to enable glBufferSubData kludge
|
|
// Query vendor to enable glBufferSubData kludge
|
|
@@ -439,7 +441,7 @@ static void ImGui_ImplOpenGL3_SetupRenderState(ImDrawData* draw_data, int fb_wid
|
|
glDisable(GL_STENCIL_TEST);
|
|
glDisable(GL_STENCIL_TEST);
|
|
glEnable(GL_SCISSOR_TEST);
|
|
glEnable(GL_SCISSOR_TEST);
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART
|
|
- if (bd->GlVersion >= 310)
|
|
|
|
|
|
+ if (!bd->GlProfileIsES3 && bd->GlVersion >= 310)
|
|
glDisable(GL_PRIMITIVE_RESTART);
|
|
glDisable(GL_PRIMITIVE_RESTART);
|
|
#endif
|
|
#endif
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE
|
|
@@ -551,7 +553,7 @@ void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data)
|
|
GLboolean last_enable_stencil_test = glIsEnabled(GL_STENCIL_TEST);
|
|
GLboolean last_enable_stencil_test = glIsEnabled(GL_STENCIL_TEST);
|
|
GLboolean last_enable_scissor_test = glIsEnabled(GL_SCISSOR_TEST);
|
|
GLboolean last_enable_scissor_test = glIsEnabled(GL_SCISSOR_TEST);
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART
|
|
- GLboolean last_enable_primitive_restart = (bd->GlVersion >= 310) ? glIsEnabled(GL_PRIMITIVE_RESTART) : GL_FALSE;
|
|
|
|
|
|
+ GLboolean last_enable_primitive_restart = (!bd->GlProfileIsES3 && bd->GlVersion >= 310) ? glIsEnabled(GL_PRIMITIVE_RESTART) : GL_FALSE;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
// Setup desired GL state
|
|
// Setup desired GL state
|
|
@@ -670,7 +672,7 @@ void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data)
|
|
if (last_enable_stencil_test) glEnable(GL_STENCIL_TEST); else glDisable(GL_STENCIL_TEST);
|
|
if (last_enable_stencil_test) glEnable(GL_STENCIL_TEST); else glDisable(GL_STENCIL_TEST);
|
|
if (last_enable_scissor_test) glEnable(GL_SCISSOR_TEST); else glDisable(GL_SCISSOR_TEST);
|
|
if (last_enable_scissor_test) glEnable(GL_SCISSOR_TEST); else glDisable(GL_SCISSOR_TEST);
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART
|
|
- if (bd->GlVersion >= 310) { if (last_enable_primitive_restart) glEnable(GL_PRIMITIVE_RESTART); else glDisable(GL_PRIMITIVE_RESTART); }
|
|
|
|
|
|
+ if (!bd->GlProfileIsES3 && bd->GlVersion >= 310) { if (last_enable_primitive_restart) glEnable(GL_PRIMITIVE_RESTART); else glDisable(GL_PRIMITIVE_RESTART); }
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE
|