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) {
|
void ImGuiRenderer::initialize(WindowWrapper *window) {
|
||||||
m_window.reset(window);
|
m_window.reset(window);
|
||||||
initializeOpenGLFunctions();
|
initializeOpenGLFunctions();
|
||||||
|
g_fun = new QOpenGLFunctions_3_3_Core();
|
||||||
|
g_fun->initializeOpenGLFunctions();
|
||||||
|
|
||||||
ImGui::CreateContext();
|
ImGui::CreateContext();
|
||||||
|
|
||||||
@ -59,6 +61,7 @@ void ImGuiRenderer::initialize(WindowWrapper *window) {
|
|||||||
g_currentClipboardText = QGuiApplication::clipboard()->text().toUtf8();
|
g_currentClipboardText = QGuiApplication::clipboard()->text().toUtf8();
|
||||||
return (const char *)g_currentClipboardText.data();
|
return (const char *)g_currentClipboardText.data();
|
||||||
};
|
};
|
||||||
|
io.IniFilename = nullptr;
|
||||||
|
|
||||||
window->installEventFilter(this);
|
window->installEventFilter(this);
|
||||||
}
|
}
|
||||||
@ -114,7 +117,7 @@ void ImGuiRenderer::renderDrawList(ImDrawData *draw_data)
|
|||||||
glUseProgram(g_ShaderHandle);
|
glUseProgram(g_ShaderHandle);
|
||||||
glUniform1i(g_AttribLocationTex, 0);
|
glUniform1i(g_AttribLocationTex, 0);
|
||||||
glUniformMatrix4fv(g_AttribLocationProjMtx, 1, GL_FALSE, &ortho_projection[0][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++)
|
for (int n = 0; n < draw_data->CmdListsCount; n++)
|
||||||
{
|
{
|
||||||
@ -148,7 +151,7 @@ void ImGuiRenderer::renderDrawList(ImDrawData *draw_data)
|
|||||||
glUseProgram(last_program);
|
glUseProgram(last_program);
|
||||||
glBindTexture(GL_TEXTURE_2D, last_texture);
|
glBindTexture(GL_TEXTURE_2D, last_texture);
|
||||||
glActiveTexture(last_active_texture);
|
glActiveTexture(last_active_texture);
|
||||||
glBindVertexArray(last_vertex_array);
|
g_fun->glBindVertexArray(last_vertex_array);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, last_array_buffer);
|
glBindBuffer(GL_ARRAY_BUFFER, last_array_buffer);
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, last_element_array_buffer);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, last_element_array_buffer);
|
||||||
glBlendEquationSeparate(last_blend_equation_rgb, last_blend_equation_alpha);
|
glBlendEquationSeparate(last_blend_equation_rgb, last_blend_equation_alpha);
|
||||||
@ -241,8 +244,8 @@ bool ImGuiRenderer::createDeviceObjects()
|
|||||||
glGenBuffers(1, &g_VboHandle);
|
glGenBuffers(1, &g_VboHandle);
|
||||||
glGenBuffers(1, &g_ElementsHandle);
|
glGenBuffers(1, &g_ElementsHandle);
|
||||||
|
|
||||||
glGenVertexArrays(1, &g_VaoHandle);
|
g_fun->glGenVertexArrays(1, &g_VaoHandle);
|
||||||
glBindVertexArray(g_VaoHandle);
|
g_fun->glBindVertexArray(g_VaoHandle);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, g_VboHandle);
|
glBindBuffer(GL_ARRAY_BUFFER, g_VboHandle);
|
||||||
glEnableVertexAttribArray(g_AttribLocationPosition);
|
glEnableVertexAttribArray(g_AttribLocationPosition);
|
||||||
glEnableVertexAttribArray(g_AttribLocationUV);
|
glEnableVertexAttribArray(g_AttribLocationUV);
|
||||||
@ -259,7 +262,7 @@ bool ImGuiRenderer::createDeviceObjects()
|
|||||||
// Restore modified GL state
|
// Restore modified GL state
|
||||||
glBindTexture(GL_TEXTURE_2D, last_texture);
|
glBindTexture(GL_TEXTURE_2D, last_texture);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, last_array_buffer);
|
glBindBuffer(GL_ARRAY_BUFFER, last_array_buffer);
|
||||||
glBindVertexArray(last_vertex_array);
|
g_fun->glBindVertexArray(last_vertex_array);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
6
3rdparty/qtimgui/ImGuiRenderer.h
vendored
6
3rdparty/qtimgui/ImGuiRenderer.h
vendored
@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QOpenGLExtraFunctions>
|
#include <QOpenGLFunctions>
|
||||||
|
#include <QOpenGLFunctions_3_3_Core>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QPoint>
|
#include <QPoint>
|
||||||
#include <imgui.h>
|
#include <imgui.h>
|
||||||
@ -22,7 +23,7 @@ public:
|
|||||||
virtual QPoint mapFromGlobal(const QPoint &p) const = 0;
|
virtual QPoint mapFromGlobal(const QPoint &p) const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ImGuiRenderer : public QObject, QOpenGLExtraFunctions {
|
class ImGuiRenderer : public QObject, QOpenGLFunctions {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
void initialize(WindowWrapper *window);
|
void initialize(WindowWrapper *window);
|
||||||
@ -53,6 +54,7 @@ private:
|
|||||||
int g_AttribLocationTex = 0, g_AttribLocationProjMtx = 0;
|
int g_AttribLocationTex = 0, g_AttribLocationProjMtx = 0;
|
||||||
int g_AttribLocationPosition = 0, g_AttribLocationUV = 0, g_AttribLocationColor = 0;
|
int g_AttribLocationPosition = 0, g_AttribLocationUV = 0, g_AttribLocationColor = 0;
|
||||||
unsigned int g_VboHandle = 0, g_VaoHandle = 0, g_ElementsHandle = 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();
|
return w->size();
|
||||||
}
|
}
|
||||||
qreal devicePixelRatio() const override {
|
qreal devicePixelRatio() const override {
|
||||||
return w->devicePixelRatioF();
|
return w->devicePixelRatio();
|
||||||
}
|
}
|
||||||
bool isActive() const override {
|
bool isActive() const override {
|
||||||
return w->isActiveWindow();
|
return w->isActiveWindow();
|
||||||
|
@ -12,6 +12,12 @@ if (BUILD_PYTHON)
|
|||||||
|
|
||||||
../3rdparty/python-console/modified/pyredirector.cc
|
../3rdparty/python-console/modified/pyredirector.cc
|
||||||
../3rdparty/python-console/modified/pyinterpreter.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()
|
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})
|
add_library(gui_${family} STATIC ${GUI_SOURCE_FILES} ${PYTHON_CONSOLE_SRC} ${GUI_RESOURCE_FILES})
|
||||||
include(${family}/family.cmake)
|
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)
|
if (BUILD_PYTHON)
|
||||||
target_include_directories(gui_${family} PRIVATE ../3rdparty/python-console ../3rdparty/python-console/modified)
|
target_include_directories(gui_${family} PRIVATE ../3rdparty/python-console ../3rdparty/python-console/modified)
|
||||||
endif()
|
endif()
|
||||||
|
Loading…
Reference in New Issue
Block a user