diff --git a/3rdparty/qtimgui/ImGuiRenderer.cpp b/3rdparty/qtimgui/ImGuiRenderer.cpp index 7f19dcd1..21a2423a 100644 --- a/3rdparty/qtimgui/ImGuiRenderer.cpp +++ b/3rdparty/qtimgui/ImGuiRenderer.cpp @@ -39,6 +39,8 @@ QByteArray g_currentClipboardText; void ImGuiRenderer::initialize(WindowWrapper *window) { m_window.reset(window); initializeOpenGLFunctions(); + g_fun = new QOpenGLFunctions_3_3_Core(); + g_fun->initializeOpenGLFunctions(); ImGui::CreateContext(); @@ -59,6 +61,7 @@ void ImGuiRenderer::initialize(WindowWrapper *window) { g_currentClipboardText = QGuiApplication::clipboard()->text().toUtf8(); return (const char *)g_currentClipboardText.data(); }; + io.IniFilename = nullptr; window->installEventFilter(this); } @@ -114,7 +117,7 @@ void ImGuiRenderer::renderDrawList(ImDrawData *draw_data) glUseProgram(g_ShaderHandle); glUniform1i(g_AttribLocationTex, 0); glUniformMatrix4fv(g_AttribLocationProjMtx, 1, GL_FALSE, &ortho_projection[0][0]); - glBindVertexArray(g_VaoHandle); + g_fun->glBindVertexArray(g_VaoHandle); for (int n = 0; n < draw_data->CmdListsCount; n++) { @@ -148,7 +151,7 @@ void ImGuiRenderer::renderDrawList(ImDrawData *draw_data) glUseProgram(last_program); glBindTexture(GL_TEXTURE_2D, last_texture); glActiveTexture(last_active_texture); - glBindVertexArray(last_vertex_array); + g_fun->glBindVertexArray(last_vertex_array); glBindBuffer(GL_ARRAY_BUFFER, last_array_buffer); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, last_element_array_buffer); glBlendEquationSeparate(last_blend_equation_rgb, last_blend_equation_alpha); @@ -241,8 +244,8 @@ bool ImGuiRenderer::createDeviceObjects() glGenBuffers(1, &g_VboHandle); glGenBuffers(1, &g_ElementsHandle); - glGenVertexArrays(1, &g_VaoHandle); - glBindVertexArray(g_VaoHandle); + g_fun->glGenVertexArrays(1, &g_VaoHandle); + g_fun->glBindVertexArray(g_VaoHandle); glBindBuffer(GL_ARRAY_BUFFER, g_VboHandle); glEnableVertexAttribArray(g_AttribLocationPosition); glEnableVertexAttribArray(g_AttribLocationUV); @@ -259,7 +262,7 @@ bool ImGuiRenderer::createDeviceObjects() // Restore modified GL state glBindTexture(GL_TEXTURE_2D, last_texture); glBindBuffer(GL_ARRAY_BUFFER, last_array_buffer); - glBindVertexArray(last_vertex_array); + g_fun->glBindVertexArray(last_vertex_array); return true; } diff --git a/3rdparty/qtimgui/ImGuiRenderer.h b/3rdparty/qtimgui/ImGuiRenderer.h index ca69ffaa..f0d7315e 100644 --- a/3rdparty/qtimgui/ImGuiRenderer.h +++ b/3rdparty/qtimgui/ImGuiRenderer.h @@ -1,6 +1,7 @@ #pragma once -#include +#include +#include #include #include #include @@ -22,7 +23,7 @@ public: virtual QPoint mapFromGlobal(const QPoint &p) const = 0; }; -class ImGuiRenderer : public QObject, QOpenGLExtraFunctions { +class ImGuiRenderer : public QObject, QOpenGLFunctions { Q_OBJECT public: void initialize(WindowWrapper *window); @@ -53,6 +54,7 @@ private: int g_AttribLocationTex = 0, g_AttribLocationProjMtx = 0; int g_AttribLocationPosition = 0, g_AttribLocationUV = 0, g_AttribLocationColor = 0; unsigned int g_VboHandle = 0, g_VaoHandle = 0, g_ElementsHandle = 0; + QOpenGLFunctions_3_3_Core *g_fun = nullptr; }; } diff --git a/3rdparty/qtimgui/QtImGui.cpp b/3rdparty/qtimgui/QtImGui.cpp index 97205389..6f5b0480 100644 --- a/3rdparty/qtimgui/QtImGui.cpp +++ b/3rdparty/qtimgui/QtImGui.cpp @@ -21,7 +21,7 @@ public: return w->size(); } qreal devicePixelRatio() const override { - return w->devicePixelRatioF(); + return w->devicePixelRatio(); } bool isActive() const override { return w->isActiveWindow(); diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 2e8e367e..a818640f 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -12,6 +12,12 @@ if (BUILD_PYTHON) ../3rdparty/python-console/modified/pyredirector.cc ../3rdparty/python-console/modified/pyinterpreter.cc + ../3rdparty/imgui/imgui_widgets.cpp + ../3rdparty/imgui/imgui_draw.cpp + ../3rdparty/imgui/imgui.cpp + ../3rdparty/imgui/imgui_demo.cpp + ../3rdparty/qtimgui/ImGuiRenderer.cpp + ../3rdparty/qtimgui/QtImGui.cpp ) endif() @@ -27,7 +33,7 @@ set(GUI_LIBRARY_FILES_${ufamily} Qt5::Widgets Qt5::OpenGL ${OPENGL_LIBRARIES} Qt add_library(gui_${family} STATIC ${GUI_SOURCE_FILES} ${PYTHON_CONSOLE_SRC} ${GUI_RESOURCE_FILES}) include(${family}/family.cmake) -target_include_directories(gui_${family} PRIVATE ../${family} ${family} ../3rdparty/QtPropertyBrowser/src) +target_include_directories(gui_${family} PRIVATE ../${family} ${family} ../3rdparty/QtPropertyBrowser/src ../3rdparty/imgui ../3rdparty/qtimgui/) if (BUILD_PYTHON) target_include_directories(gui_${family} PRIVATE ../3rdparty/python-console ../3rdparty/python-console/modified) endif()