|
@@ -246,6 +246,7 @@ struct ImGui_ImplOpenGL3_Data
|
|
|
GLsizeiptr VertexBufferSize;
|
|
|
GLsizeiptr IndexBufferSize;
|
|
|
bool HasPolygonMode;
|
|
|
+ bool HasBindSampler;
|
|
|
bool HasClipOrigin;
|
|
|
bool UseBufferSubData;
|
|
|
ImVector<char> TempBuffer;
|
|
@@ -396,6 +397,9 @@ bool ImGui_ImplOpenGL3_Init(const char* glsl_version)
|
|
|
// Detect extensions we support
|
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_POLYGON_MODE
|
|
|
bd->HasPolygonMode = (!bd->GlProfileIsES2 && !bd->GlProfileIsES3);
|
|
|
+#endif
|
|
|
+#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_BIND_SAMPLER
|
|
|
+ bd->HasBindSampler = (bd->GlVersion >= 330 || bd->GlProfileIsES3);
|
|
|
#endif
|
|
|
bd->HasClipOrigin = (bd->GlVersion >= 450);
|
|
|
#ifdef IMGUI_IMPL_OPENGL_HAS_EXTENSIONS
|
|
@@ -495,7 +499,7 @@ static void ImGui_ImplOpenGL3_SetupRenderState(ImDrawData* draw_data, int fb_wid
|
|
|
glUniformMatrix4fv(bd->AttribLocationProjMtx, 1, GL_FALSE, &ortho_projection[0][0]);
|
|
|
|
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_BIND_SAMPLER
|
|
|
- if (bd->GlVersion >= 330 || bd->GlProfileIsES3)
|
|
|
+ if (bd->HasBindSampler)
|
|
|
glBindSampler(0, 0); // We use combined texture/sampler state. Applications using GL 3.3 and GL ES 3.0 may set that otherwise.
|
|
|
#endif
|
|
|
|
|
@@ -543,7 +547,7 @@ void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data)
|
|
|
GLuint last_program; glGetIntegerv(GL_CURRENT_PROGRAM, (GLint*)&last_program);
|
|
|
GLuint last_texture; glGetIntegerv(GL_TEXTURE_BINDING_2D, (GLint*)&last_texture);
|
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_BIND_SAMPLER
|
|
|
- GLuint last_sampler; if (bd->GlVersion >= 330 || bd->GlProfileIsES3) { glGetIntegerv(GL_SAMPLER_BINDING, (GLint*)&last_sampler); } else { last_sampler = 0; }
|
|
|
+ GLuint last_sampler; if (bd->HasBindSampler) { glGetIntegerv(GL_SAMPLER_BINDING, (GLint*)&last_sampler); } else { last_sampler = 0; }
|
|
|
#endif
|
|
|
GLuint last_array_buffer; glGetIntegerv(GL_ARRAY_BUFFER_BINDING, (GLint*)&last_array_buffer);
|
|
|
#ifndef IMGUI_IMPL_OPENGL_USE_VERTEX_ARRAY
|
|
@@ -668,7 +672,7 @@ void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data)
|
|
|
if (last_program == 0 || glIsProgram(last_program)) glUseProgram(last_program);
|
|
|
glBindTexture(GL_TEXTURE_2D, last_texture);
|
|
|
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_BIND_SAMPLER
|
|
|
- if (bd->GlVersion >= 330 || bd->GlProfileIsES3)
|
|
|
+ if (bd->HasBindSampler)
|
|
|
glBindSampler(0, last_sampler);
|
|
|
#endif
|
|
|
glActiveTexture(last_active_texture);
|