Skip to content

Commit 3f8338f

Browse files
committed
Bump to ImGUI v1.89.2 and ImPlot v0.14
1 parent ac6167f commit 3f8338f

33 files changed

Lines changed: 24755 additions & 12800 deletions

DebugGUI/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ if(APPLE)
4646
set(GUI_TARGET glfw)
4747
elseif(GLFW_FOUND)
4848
set(GUI_BACKEND
49-
src/imgui_impl_glfw_gl3.cpp
49+
src/imgui_impl_glfw.cpp
50+
src/imgui_impl_opengl3.cpp
5051
src/implot.cpp
5152
src/implot_items.cpp
5253
src/gl3w.c
@@ -64,7 +65,8 @@ elseif(GLFW_FOUND)
6465
src/Sokol3DUtils.h
6566
src/GL3DUtils.h
6667
src/DebugGUI.h
67-
src/imgui_impl_glfw_gl3.h
68+
src/imgui_impl_opengl3.h
69+
src/imgui_impl_glfw.h
6870
src/icons_font_awesome.h
6971
)
7072
set(GUI_TARGET glfw)

DebugGUI/src/DebugGUI.cxx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
#include "imgui.h"
22
#include "implot.h"
3-
#include "imgui_impl_glfw_gl3.h"
3+
#include "imgui_impl_glfw.h"
4+
#include "imgui_impl_opengl3.h"
5+
#include "GL/gl3w.h"
46
#include "icons_font_awesome.h"
57
// Needed by icons_font_awesome.ttf.h
68
#include <cstdint>
79
#include "icons_font_awesome.ttf.h"
8-
#include "GL/gl3w.h" // This example is using gl3w to access OpenGL functions (because it is small). You may use glew/glad/glLoadGen/etc. whatever already works for you.
910
#include <GLFW/glfw3.h>
1011
#include <cstdio>
1112
#include <functional>
@@ -43,7 +44,9 @@ void* initGUI(const char* name, void(*error_callback)(int, char const*descriptio
4344
gl3wInit();
4445

4546
// Setup ImGui binding
46-
ImGui_ImplGlfwGL3_Init(window, true);
47+
ImGui::CreateContext();
48+
ImGui_ImplGlfw_InitForOpenGL(window, true);
49+
ImGui_ImplOpenGL3_Init();
4750
} else {
4851
ImGui::CreateContext();
4952
ImGuiIO& io = ImGui::GetIO();
@@ -102,7 +105,9 @@ bool pollGUIPreRender(void* context, float delta)
102105
return false;
103106
}
104107
glfwPollEvents();
105-
ImGui_ImplGlfwGL3_NewFrame();
108+
ImGui_ImplOpenGL3_NewFrame();
109+
ImGui_ImplGlfw_NewFrame();
110+
ImGui::NewFrame();
106111

107112
// Clearing the viewport
108113
int display_w, display_h;
@@ -139,7 +144,7 @@ void pollGUIPostRender(void* context, void *draw_data)
139144
if (context) {
140145
GLFWwindow* window = reinterpret_cast<GLFWwindow*>(context);
141146

142-
ImGui_ImplGlfwGL3_RenderDrawLists((ImDrawData*)draw_data);
147+
ImGui_ImplOpenGL3_RenderDrawData((ImDrawData*)draw_data);
143148
glfwSwapBuffers(window);
144149
}
145150
}
@@ -160,7 +165,8 @@ void disposeGUI()
160165
{
161166
ImPlot::DestroyContext();
162167
// Cleanup
163-
ImGui_ImplGlfwGL3_Shutdown();
168+
ImGui_ImplOpenGL3_Shutdown();
169+
ImGui_ImplGlfw_Shutdown();
164170
glfwTerminate();
165171
}
166172

DebugGUI/src/DebugGUIMacos.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ static void default_error_callback(int error, const char *description) {
6868
context->commandQueue = [context->device newCommandQueue];
6969

7070
// Setup Platform/Renderer backends
71-
ImGui_ImplGlfw_InitForOpenGL(context->window, true);
71+
ImGui_ImplGlfw_InitForOther(context->window, true);
7272
// Load Fonts
7373
// (there is a default font, this is only if you want to change it. see
7474
// extra_fonts/README.txt for more details)

DebugGUI/src/imconfig.h

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,26 @@
2828

2929
//---- Don't define obsolete functions/enums/behaviors. Consider enabling from time to time after updating to avoid using soon-to-be obsolete function/names.
3030
//#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS
31+
//#define IMGUI_DISABLE_OBSOLETE_KEYIO // 1.87: disable legacy io.KeyMap[]+io.KeysDown[] in favor io.AddKeyEvent(). This will be folded into IMGUI_DISABLE_OBSOLETE_FUNCTIONS in a few versions.
3132

32-
//---- Disable all of Dear ImGui or don't implement standard windows.
33-
// It is very strongly recommended to NOT disable the demo windows during development. Please read comments in imgui_demo.cpp.
33+
//---- Disable all of Dear ImGui or don't implement standard windows/tools.
34+
// It is very strongly recommended to NOT disable the demo windows and debug tool during development. They are extremely useful in day to day work. Please read comments in imgui_demo.cpp.
3435
//#define IMGUI_DISABLE // Disable everything: all headers and source files will be empty.
35-
//#define IMGUI_DISABLE_DEMO_WINDOWS // Disable demo windows: ShowDemoWindow()/ShowStyleEditor() will be empty. Not recommended.
36-
//#define IMGUI_DISABLE_METRICS_WINDOW // Disable metrics/debugger window: ShowMetricsWindow() will be empty.
36+
//#define IMGUI_DISABLE_DEMO_WINDOWS // Disable demo windows: ShowDemoWindow()/ShowStyleEditor() will be empty.
37+
//#define IMGUI_DISABLE_DEBUG_TOOLS // Disable metrics/debugger and other debug tools: ShowMetricsWindow(), ShowDebugLogWindow() and ShowStackToolWindow() will be empty (this was called IMGUI_DISABLE_METRICS_WINDOW before 1.88).
3738

3839
//---- Don't implement some functions to reduce linkage requirements.
3940
//#define IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS // [Win32] Don't implement default clipboard handler. Won't use and link with OpenClipboard/GetClipboardData/CloseClipboard etc. (user32.lib/.a, kernel32.lib/.a)
40-
//#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] Don't implement default IME handler. Won't use and link with ImmGetContext/ImmSetCompositionWindow. (imm32.lib/.a)
41+
//#define IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with Visual Studio] Implement default IME handler (require imm32.lib/.a, auto-link for Visual Studio, -limm32 on command-line for MinGW)
42+
//#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with non-Visual Studio compilers] Don't implement default IME handler (won't require imm32.lib/.a)
4143
//#define IMGUI_DISABLE_WIN32_FUNCTIONS // [Win32] Won't use and link with any Win32 function (clipboard, ime).
4244
//#define IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS // [OSX] Implement default OSX clipboard handler (need to link with '-framework ApplicationServices', this is why this is not the default).
4345
//#define IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS // Don't implement ImFormatString/ImFormatStringV so you can implement them yourself (e.g. if you don't want to link with vsnprintf)
4446
//#define IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS // Don't implement ImFabs/ImSqrt/ImPow/ImFmod/ImCos/ImSin/ImAcos/ImAtan2 so you can implement them yourself.
45-
//#define IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite so you can implement them yourself if you don't want to link with fopen/fclose/fread/fwrite. This will also disable the LogToTTY() function.
47+
//#define IMGUI_DISABLE_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and ImFileHandle at all (replace them with dummies)
48+
//#define IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and ImFileHandle so you can implement them yourself if you don't want to link with fopen/fclose/fread/fwrite. This will also disable the LogToTTY() function.
4649
//#define IMGUI_DISABLE_DEFAULT_ALLOCATORS // Don't implement default allocators calling malloc()/free() to avoid linking with them. You will need to call ImGui::SetAllocatorFunctions().
50+
//#define IMGUI_DISABLE_SSE // Disable use of SSE intrinsics even if available
4751

4852
//---- Include imgui_user.h at the end of imgui.h as a convenience
4953
//#define IMGUI_INCLUDE_IMGUI_USER_H
@@ -58,16 +62,17 @@
5862
// By default the embedded implementations are declared static and not available outside of Dear ImGui sources files.
5963
//#define IMGUI_STB_TRUETYPE_FILENAME "my_folder/stb_truetype.h"
6064
//#define IMGUI_STB_RECT_PACK_FILENAME "my_folder/stb_rect_pack.h"
65+
//#define IMGUI_STB_SPRINTF_FILENAME "my_folder/stb_sprintf.h" // only used if enabled
6166
//#define IMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATION
6267
//#define IMGUI_DISABLE_STB_RECT_PACK_IMPLEMENTATION
6368

64-
//---- Use stb_printf's faster implementation of vsnprintf instead of the one from libc (unless IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS is defined)
65-
// Requires 'stb_sprintf.h' to be available in the include path. Compatibility checks of arguments and formats done by clang and GCC will be disabled in order to support the extra formats provided by STB sprintf.
66-
// #define IMGUI_USE_STB_SPRINTF
69+
//---- Use stb_sprintf.h for a faster implementation of vsnprintf instead of the one from libc (unless IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS is defined)
70+
// Compatibility checks of arguments and formats done by clang and GCC will be disabled in order to support the extra formats provided by stb_sprintf.h.
71+
//#define IMGUI_USE_STB_SPRINTF
6772

6873
//---- Use FreeType to build and rasterize the font atlas (instead of stb_truetype which is embedded by default in Dear ImGui)
6974
// Requires FreeType headers to be available in the include path. Requires program to be compiled with 'misc/freetype/imgui_freetype.cpp' (in this repository) + the FreeType library (not provided).
70-
// On Windows you may use vcpkg with 'vcpkg install freetype' + 'vcpkg integrate install'.
75+
// On Windows you may use vcpkg with 'vcpkg install freetype --triplet=x64-windows' + 'vcpkg integrate install'.
7176
//#define IMGUI_ENABLE_FREETYPE
7277

7378
//---- Use stb_truetype to build and rasterize the font atlas (default)
@@ -77,12 +82,12 @@
7782
//---- Define constructor and implicit cast operators to convert back<>forth between your math types and ImVec2/ImVec4.
7883
// This will be inlined as part of ImVec2 and ImVec4 class declarations.
7984
/*
80-
#define IM_VEC2_CLASS_EXTRA \
81-
ImVec2(const MyVec2& f) { x = f.x; y = f.y; } \
85+
#define IM_VEC2_CLASS_EXTRA \
86+
constexpr ImVec2(const MyVec2& f) : x(f.x), y(f.y) {} \
8287
operator MyVec2() const { return MyVec2(x,y); }
8388
84-
#define IM_VEC4_CLASS_EXTRA \
85-
ImVec4(const MyVec4& f) { x = f.x; y = f.y; z = f.z; w = f.w; } \
89+
#define IM_VEC4_CLASS_EXTRA \
90+
constexpr ImVec4(const MyVec4& f) : x(f.x), y(f.y), z(f.z), w(f.w) {} \
8691
operator MyVec4() const { return MyVec4(x,y,z,w); }
8792
*/
8893

@@ -103,11 +108,6 @@
103108
//#define IM_DEBUG_BREAK IM_ASSERT(0)
104109
//#define IM_DEBUG_BREAK __debugbreak()
105110

106-
//---- Debug Tools: Have the Item Picker break in the ItemAdd() function instead of ItemHoverable(),
107-
// (which comes earlier in the code, will catch a few extra items, allow picking items other than Hovered one.)
108-
// This adds a small runtime cost which is why it is not enabled by default.
109-
//#define IMGUI_DEBUG_TOOL_ITEM_PICKER_EX
110-
111111
//---- Debug Tools: Enable slower asserts
112112
//#define IMGUI_DEBUG_PARANOID
113113

0 commit comments

Comments
 (0)