mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Backends: OpenGL: Fixed loader auto-detection to not interfere with ES2/ES3 defines. (#3246)
This commit is contained in:
		
				
					committed by
					
						 ocornut
						ocornut
					
				
			
			
				
	
			
			
			
						parent
						
							5ddf60d8ce
						
					
				
				
					commit
					3f26a07ee1
				
			| @@ -66,6 +66,7 @@ Other Changes: | ||||
| - Backends: OpenGL: Fixed handling of GL 4.5+ glClipControl(GL_UPPER_LEFT) by inverting the | ||||
|   projection matrix top and bottom values. (#3143, #3146) [@u3shit] | ||||
| - Backends: OpenGL: On OSX, if unspecified by app, made default GLSL version 150. (#3199) [@albertvaka] | ||||
| - Backends: OpenGL: Fixed loader auto-detection to not interfere with ES2/ES3 defines. (#3246) [@funchal] | ||||
| - Backends: Vulkan: Fixed error in if initial frame has no vertices. (#3177) | ||||
| - Backends: Vulkan: Fixed edge case where render callbacks wouldn't be called if the ImDrawData | ||||
|   structure didn't have any vertices. (#2697) [@kudaba] | ||||
|   | ||||
| @@ -79,27 +79,7 @@ | ||||
| #else | ||||
| #include <stdint.h>     // intptr_t | ||||
| #endif | ||||
| #if defined(__APPLE__) | ||||
| #include "TargetConditionals.h" | ||||
| #endif | ||||
|  | ||||
| // Auto-enable GLES on matching platforms | ||||
| #if !defined(IMGUI_IMPL_OPENGL_ES2) && !defined(IMGUI_IMPL_OPENGL_ES3) | ||||
| #if (defined(__APPLE__) && (TARGET_OS_IOS || TARGET_OS_TV)) || (defined(__ANDROID__)) | ||||
| #define IMGUI_IMPL_OPENGL_ES3           // iOS, Android  -> GL ES 3, "#version 300 es" | ||||
| #elif defined(__EMSCRIPTEN__) | ||||
| #define IMGUI_IMPL_OPENGL_ES2           // Emscripten    -> GL ES 2, "#version 100" | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| #if defined(IMGUI_IMPL_OPENGL_ES2) || defined(IMGUI_IMPL_OPENGL_ES3) | ||||
| #undef IMGUI_IMPL_OPENGL_LOADER_GL3W | ||||
| #undef IMGUI_IMPL_OPENGL_LOADER_GLEW | ||||
| #undef IMGUI_IMPL_OPENGL_LOADER_GLAD | ||||
| #undef IMGUI_IMPL_OPENGL_LOADER_GLBINDING2 | ||||
| #undef IMGUI_IMPL_OPENGL_LOADER_GLBINDING3 | ||||
| #undef IMGUI_IMPL_OPENGL_LOADER_CUSTOM | ||||
| #endif | ||||
|  | ||||
| // GL includes | ||||
| #if defined(IMGUI_IMPL_OPENGL_ES2) | ||||
|   | ||||
| @@ -12,7 +12,7 @@ | ||||
| // https://github.com/ocornut/imgui | ||||
|  | ||||
| // About Desktop OpenGL function loaders: | ||||
| //  Modern desktop OpenGL doesn't have a standard portable header file to load OpenGL function pointers. | ||||
| //  Modern Desktop OpenGL doesn't have a standard portable header file to load OpenGL function pointers. | ||||
| //  Helper libraries are often used for this purpose! Here we are supporting a few common ones (gl3w, glew, glad). | ||||
| //  You may use another loader/header of your choice (glext, glLoadGen, etc.), or chose to manually implement your own. | ||||
|  | ||||
| @@ -36,36 +36,49 @@ IMGUI_IMPL_API void     ImGui_ImplOpenGL3_DestroyFontsTexture(); | ||||
| IMGUI_IMPL_API bool     ImGui_ImplOpenGL3_CreateDeviceObjects(); | ||||
| IMGUI_IMPL_API void     ImGui_ImplOpenGL3_DestroyDeviceObjects(); | ||||
|  | ||||
| // Specific OpenGL versions | ||||
| // Specific OpenGL ES versions | ||||
| //#define IMGUI_IMPL_OPENGL_ES2     // Auto-detected on Emscripten | ||||
| //#define IMGUI_IMPL_OPENGL_ES3     // Auto-detected on iOS/Android | ||||
|  | ||||
| // Desktop OpenGL: attempt to detect default GL loader based on available header files. | ||||
| // Attempt to auto-detect the default Desktop GL loader based on available header files. | ||||
| // If auto-detection fails or doesn't select the same GL loader file as used by your application, | ||||
| // you are likely to get a crash in ImGui_ImplOpenGL3_Init(). | ||||
| // You can explicitly select a loader by using '#define IMGUI_IMPL_OPENGL_LOADER_XXX' in imconfig.h or compiler command-line. | ||||
| #if !defined(IMGUI_IMPL_OPENGL_LOADER_GL3W) \ | ||||
| // You can explicitly select a loader by using one of the '#define IMGUI_IMPL_OPENGL_LOADER_XXX' in imconfig.h or compiler command-line. | ||||
| #if !defined(IMGUI_IMPL_OPENGL_ES2) \ | ||||
|  && !defined(IMGUI_IMPL_OPENGL_ES3) \ | ||||
|  && !defined(IMGUI_IMPL_OPENGL_LOADER_GL3W) \ | ||||
|  && !defined(IMGUI_IMPL_OPENGL_LOADER_GLEW) \ | ||||
|  && !defined(IMGUI_IMPL_OPENGL_LOADER_GLAD) \ | ||||
|  && !defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING2) \ | ||||
|  && !defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING3) \ | ||||
|  && !defined(IMGUI_IMPL_OPENGL_LOADER_CUSTOM) | ||||
|     #if defined(__has_include) | ||||
|         #if __has_include(<GL/glew.h>) | ||||
|             #define IMGUI_IMPL_OPENGL_LOADER_GLEW | ||||
|         #elif __has_include(<glad/glad.h>) | ||||
|             #define IMGUI_IMPL_OPENGL_LOADER_GLAD | ||||
|         #elif __has_include(<GL/gl3w.h>) | ||||
|             #define IMGUI_IMPL_OPENGL_LOADER_GL3W | ||||
|         #elif __has_include(<glbinding/glbinding.h>) | ||||
|             #define IMGUI_IMPL_OPENGL_LOADER_GLBINDING3 | ||||
|         #elif __has_include(<glbinding/Binding.h>) | ||||
|             #define IMGUI_IMPL_OPENGL_LOADER_GLBINDING2 | ||||
|         #else | ||||
|             #error "Cannot detect OpenGL loader!" | ||||
|         #endif | ||||
|     #else | ||||
|         #define IMGUI_IMPL_OPENGL_LOADER_GL3W       // Default to GL3W | ||||
|     #endif | ||||
|  | ||||
| // Try to detect GLES on matching platforms | ||||
| #if defined(__APPLE__) | ||||
| #include "TargetConditionals.h" | ||||
| #endif | ||||
| #if (defined(__APPLE__) && (TARGET_OS_IOS || TARGET_OS_TV)) || (defined(__ANDROID__)) | ||||
| #define IMGUI_IMPL_OPENGL_ES3               // iOS, Android  -> GL ES 3, "#version 300 es" | ||||
| #elif defined(__EMSCRIPTEN__) | ||||
| #define IMGUI_IMPL_OPENGL_ES2               // Emscripten    -> GL ES 2, "#version 100" | ||||
|  | ||||
| // Otherwise try to detect supported Desktop OpenGL loaders.. | ||||
| #elif defined(__has_include) | ||||
| #if __has_include(<GL/glew.h>) | ||||
|     #define IMGUI_IMPL_OPENGL_LOADER_GLEW | ||||
| #elif __has_include(<glad/glad.h>) | ||||
|     #define IMGUI_IMPL_OPENGL_LOADER_GLAD | ||||
| #elif __has_include(<GL/gl3w.h>) | ||||
|     #define IMGUI_IMPL_OPENGL_LOADER_GL3W | ||||
| #elif __has_include(<glbinding/glbinding.h>) | ||||
|     #define IMGUI_IMPL_OPENGL_LOADER_GLBINDING3 | ||||
| #elif __has_include(<glbinding/Binding.h>) | ||||
|     #define IMGUI_IMPL_OPENGL_LOADER_GLBINDING2 | ||||
| #else | ||||
|     #error "Cannot detect OpenGL loader!" | ||||
| #endif | ||||
| #else | ||||
|     #define IMGUI_IMPL_OPENGL_LOADER_GL3W   // Default to GL3W embedded in our repository | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|   | ||||
		Reference in New Issue
	
	Block a user