mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	Merge branch 'master' into docking
# Conflicts: # backends/imgui_impl_opengl3.cpp # imgui.cpp
This commit is contained in:
		| @@ -15,6 +15,7 @@ | ||||
| // CHANGELOG | ||||
| // (minor and older changes stripped away, please see git history for details) | ||||
| //  2020-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface. | ||||
| //  2020-10-23: OpenGL: Save and restore current GL_PRIMITIVE_RESTART state. | ||||
| //  2020-10-15: OpenGL: Use glGetString(GL_VERSION) instead of glGetIntegerv(GL_MAJOR_VERSION, ...) when the later returns zero (e.g. Desktop GL 2.x) | ||||
| //  2020-09-17: OpenGL: Fix to avoid compiling/calling glBindSampler() on ES or pre 3.3 context which have the defines set by a loader. | ||||
| //  2020-07-10: OpenGL: Added support for glad2 OpenGL loader. | ||||
| @@ -136,6 +137,11 @@ using namespace gl; | ||||
| #define IMGUI_IMPL_OPENGL_MAY_HAVE_BIND_SAMPLER | ||||
| #endif | ||||
|  | ||||
| // Desktop GL 3.1+ has GL_PRIMITIVE_RESTART state | ||||
| #if !defined(IMGUI_IMPL_OPENGL_ES2) && !defined(IMGUI_IMPL_OPENGL_ES3) && defined(GL_VERSION_3_1) | ||||
| #define IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART | ||||
| #endif | ||||
|  | ||||
| // OpenGL Data | ||||
| static GLuint       g_GlVersion = 0;                // Extracted at runtime using GL_MAJOR_VERSION, GL_MINOR_VERSION queries (e.g. 320 for GL 3.2) | ||||
| static char         g_GlslVersionString[32] = "";   // Specified by user or detected based on compile time GL settings. | ||||
| @@ -255,6 +261,10 @@ static void ImGui_ImplOpenGL3_SetupRenderState(ImDrawData* draw_data, int fb_wid | ||||
|     glDisable(GL_CULL_FACE); | ||||
|     glDisable(GL_DEPTH_TEST); | ||||
|     glEnable(GL_SCISSOR_TEST); | ||||
| #ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART | ||||
|     if (g_GlVersion >= 310) | ||||
|         glDisable(GL_PRIMITIVE_RESTART); | ||||
| #endif | ||||
| #ifdef GL_POLYGON_MODE | ||||
|     glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); | ||||
| #endif | ||||
| @@ -345,6 +355,9 @@ void    ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data) | ||||
|     GLboolean last_enable_cull_face = glIsEnabled(GL_CULL_FACE); | ||||
|     GLboolean last_enable_depth_test = glIsEnabled(GL_DEPTH_TEST); | ||||
|     GLboolean last_enable_scissor_test = glIsEnabled(GL_SCISSOR_TEST); | ||||
| #ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART | ||||
|     GLboolean last_enable_primitive_restart = (g_GlVersion >= 310) ? glIsEnabled(GL_PRIMITIVE_RESTART) : GL_FALSE; | ||||
| #endif | ||||
|  | ||||
|     // Setup desired GL state | ||||
|     // Recreate the VAO every time (this is to easily allow multiple GL contexts to be rendered to. VAO are not shared among GL contexts) | ||||
| @@ -430,6 +443,10 @@ void    ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data) | ||||
|     if (last_enable_cull_face) glEnable(GL_CULL_FACE); else glDisable(GL_CULL_FACE); | ||||
|     if (last_enable_depth_test) glEnable(GL_DEPTH_TEST); else glDisable(GL_DEPTH_TEST); | ||||
|     if (last_enable_scissor_test) glEnable(GL_SCISSOR_TEST); else glDisable(GL_SCISSOR_TEST); | ||||
| #ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_PRIMITIVE_RESTART | ||||
|     if (g_GlVersion >= 310) { if (last_enable_primitive_restart) glEnable(GL_PRIMITIVE_RESTART); else glDisable(GL_PRIMITIVE_RESTART); } | ||||
| #endif | ||||
|  | ||||
| #ifdef GL_POLYGON_MODE | ||||
|     glPolygonMode(GL_FRONT_AND_BACK, (GLenum)last_polygon_mode[0]); | ||||
| #endif | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ocornut
					ocornut