Make imgui and qtgui compile on older qt as well, opengl 3.2 required
This commit is contained in:
parent
40722c098d
commit
f796716b83
13
3rdparty/qtimgui/ImGuiRenderer.cpp
vendored
13
3rdparty/qtimgui/ImGuiRenderer.cpp
vendored
@ -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;
|
||||
}
|
||||
|
6
3rdparty/qtimgui/ImGuiRenderer.h
vendored
6
3rdparty/qtimgui/ImGuiRenderer.h
vendored
@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <QOpenGLExtraFunctions>
|
||||
#include <QOpenGLFunctions>
|
||||
#include <QOpenGLFunctions_3_3_Core>
|
||||
#include <QObject>
|
||||
#include <QPoint>
|
||||
#include <imgui.h>
|
||||
@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
2
3rdparty/qtimgui/QtImGui.cpp
vendored
2
3rdparty/qtimgui/QtImGui.cpp
vendored
@ -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();
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user