summaryrefslogtreecommitdiffstats
path: root/src/plugins/renderers/opengl/debug/imguirenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/renderers/opengl/debug/imguirenderer.cpp')
-rw-r--r--src/plugins/renderers/opengl/debug/imguirenderer.cpp125
1 files changed, 73 insertions, 52 deletions
diff --git a/src/plugins/renderers/opengl/debug/imguirenderer.cpp b/src/plugins/renderers/opengl/debug/imguirenderer.cpp
index 4a53117a0..e2ea3d203 100644
--- a/src/plugins/renderers/opengl/debug/imguirenderer.cpp
+++ b/src/plugins/renderers/opengl/debug/imguirenderer.cpp
@@ -29,16 +29,10 @@
#define GL_VERTEX_ARRAY_BINDING 0x85B5
#endif
-#ifdef _MSC_VER
-#pragma warning (disable: 4996) // 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen
-#endif
-
QT_BEGIN_NAMESPACE
-using namespace Qt3DRender;
-using namespace Render;
-using namespace Render::Debug;
-using namespace Render::OpenGL;
+namespace Qt3DRR = Qt3DRender::Render;
+namespace Qt3DRRD = Qt3DRR::Debug;
namespace {
@@ -70,42 +64,69 @@ namespace {
int vertexToPrimitiveCount(Qt3DRender::QGeometryRenderer::PrimitiveType primitiveType, int numVertices) {
int nPrimitives = 0;
switch (primitiveType) {
- case QGeometryRenderer::Points:
- case QGeometryRenderer::LineLoop: nPrimitives += numVertices; break;
- case QGeometryRenderer::Triangles: nPrimitives += numVertices / 3; break;
- case QGeometryRenderer::Lines: nPrimitives += numVertices / 2; break;
- case QGeometryRenderer::TriangleFan:
- case QGeometryRenderer::TriangleStrip:
- case QGeometryRenderer::LineStrip: nPrimitives += numVertices - 1; break;
- case QGeometryRenderer::TrianglesAdjacency: nPrimitives += numVertices / 6; break;
- case QGeometryRenderer::TriangleStripAdjacency:
- case QGeometryRenderer::LineStripAdjacency: nPrimitives += numVertices / 2 - 1; break;
- case QGeometryRenderer::LinesAdjacency: nPrimitives += numVertices / 4; break;
- case QGeometryRenderer::Patches: nPrimitives += 1;
+ case Qt3DRender::QGeometryRenderer::Points:
+ case Qt3DRender::QGeometryRenderer::LineLoop:
+ nPrimitives += numVertices;
+ break;
+ case Qt3DRender::QGeometryRenderer::Triangles:
+ nPrimitives += numVertices / 3;
+ break;
+ case Qt3DRender::QGeometryRenderer::Lines:
+ nPrimitives += numVertices / 2;
+ break;
+ case Qt3DRender::QGeometryRenderer::TriangleFan:
+ case Qt3DRender::QGeometryRenderer::TriangleStrip:
+ case Qt3DRender::QGeometryRenderer::LineStrip:
+ nPrimitives += numVertices - 1;
+ break;
+ case Qt3DRender::QGeometryRenderer::TrianglesAdjacency:
+ nPrimitives += numVertices / 6;
+ break;
+ case Qt3DRender::QGeometryRenderer::TriangleStripAdjacency:
+ case Qt3DRender::QGeometryRenderer::LineStripAdjacency:
+ nPrimitives += numVertices / 2 - 1;
+ break;
+ case Qt3DRender::QGeometryRenderer::LinesAdjacency:
+ nPrimitives += numVertices / 4;
+ break;
+ case Qt3DRender::QGeometryRenderer::Patches:
+ nPrimitives += 1;
}
return nPrimitives;
}
const char *primitiveTypeName(Qt3DRender::QGeometryRenderer::PrimitiveType primitiveType) {
switch (primitiveType) {
- case QGeometryRenderer::Points: return "Points";
- case QGeometryRenderer::LineLoop: return "LineLoop";
- case QGeometryRenderer::Triangles: return "Triangles";
- case QGeometryRenderer::TrianglesAdjacency: return "TriangleAdjacency";
- case QGeometryRenderer::TriangleFan: return "TriangleFan";
- case QGeometryRenderer::TriangleStrip: return "TriangleStrip";
- case QGeometryRenderer::TriangleStripAdjacency: return "TriangleStringAdjacency";
- case QGeometryRenderer::LineStrip: return "LineStrip";
- case QGeometryRenderer::LineStripAdjacency: return "LineStripAdjacency";
- case QGeometryRenderer::Lines: return "Lines";
- case QGeometryRenderer::LinesAdjacency: return "LinesAdjacency";
- case QGeometryRenderer::Patches: return "Patches";
+ case Qt3DRender::QGeometryRenderer::Points:
+ return "Points";
+ case Qt3DRender::QGeometryRenderer::LineLoop:
+ return "LineLoop";
+ case Qt3DRender::QGeometryRenderer::Triangles:
+ return "Triangles";
+ case Qt3DRender::QGeometryRenderer::TrianglesAdjacency:
+ return "TriangleAdjacency";
+ case Qt3DRender::QGeometryRenderer::TriangleFan:
+ return "TriangleFan";
+ case Qt3DRender::QGeometryRenderer::TriangleStrip:
+ return "TriangleStrip";
+ case Qt3DRender::QGeometryRenderer::TriangleStripAdjacency:
+ return "TriangleStringAdjacency";
+ case Qt3DRender::QGeometryRenderer::LineStrip:
+ return "LineStrip";
+ case Qt3DRender::QGeometryRenderer::LineStripAdjacency:
+ return "LineStripAdjacency";
+ case Qt3DRender::QGeometryRenderer::Lines:
+ return "Lines";
+ case Qt3DRender::QGeometryRenderer::LinesAdjacency:
+ return "LinesAdjacency";
+ case Qt3DRender::QGeometryRenderer::Patches:
+ return "Patches";
}
return "";
}
}
-ImGuiRenderer::ImGuiRenderer(Qt3DRender::Render::OpenGL::Renderer *renderer)
+Qt3DRRD::ImGuiRenderer::ImGuiRenderer(Qt3DRR::OpenGL::Renderer *renderer)
: m_renderer(renderer)
{
ImGui::CreateContext();
@@ -132,9 +153,9 @@ ImGuiRenderer::ImGuiRenderer(Qt3DRender::Render::OpenGL::Renderer *renderer)
m_jobsRange.first = m_jobsRange.second = 0.f;
}
-ImGuiRenderer::~ImGuiRenderer() = default;
+Qt3DRRD::ImGuiRenderer::~ImGuiRenderer() = default;
-void ImGuiRenderer::renderDebugOverlay(const std::vector<RenderView *> &renderViews, const RenderView *renderView, int jobsInLastFrame)
+void Qt3DRRD::ImGuiRenderer::renderDebugOverlay(const std::vector<Qt3DRR::OpenGL::RenderView *> &renderViews, const Qt3DRR::OpenGL::RenderView *renderView, int jobsInLastFrame)
{
if (!newFrame(renderView))
return;
@@ -162,7 +183,7 @@ void ImGuiRenderer::renderDebugOverlay(const std::vector<RenderView *> &renderVi
{
ImGui::Begin("Qt3D Profiling");
char caption[50];
- sprintf(caption, "Avg %.3f ms/frame (%.1f FPS)", static_cast<double>(1000.0f / ImGui::GetIO().Framerate), static_cast<double>(ImGui::GetIO().Framerate));
+ snprintf(caption, sizeof(caption), "Avg %.3f ms/frame (%.1f FPS)", static_cast<double>(1000.0f / ImGui::GetIO().Framerate), static_cast<double>(ImGui::GetIO().Framerate));
ImGui::PlotLines("FPS", m_fpsLog, logIndex + 1, 0, caption, m_fpsRange.first, m_fpsRange.second, ImVec2(0, 80));
ImGui::PlotHistogram("Jobs", m_jobsLog, logIndex + 1, 0, nullptr, m_jobsRange.first, m_jobsRange.second, ImVec2(0, 80));
@@ -172,10 +193,10 @@ void ImGuiRenderer::renderDebugOverlay(const std::vector<RenderView *> &renderVi
QSet<HGeometryRenderer> inUseGeometries;
QSet<Qt3DCore::QNodeId> inUseTextures;
for (int j=0; j<renderViewsCount; j++) {
- RenderView *rv = renderViews.at(j);
+ Qt3DRR::OpenGL::RenderView *rv = renderViews.at(j);
nCommands += rv->commandCount();
- rv->forEachCommand([&] (const RenderCommand &command) {
- if (command.m_type != RenderCommand::Draw)
+ rv->forEachCommand([&](const Qt3DRR::OpenGL::RenderCommand &command) {
+ if (command.m_type != Qt3DRR::OpenGL::RenderCommand::Draw)
return;
nVertices += command.m_primitiveCount;
nPrimitives += vertexToPrimitiveCount(command.m_primitiveType, command.m_primitiveCount);
@@ -280,24 +301,24 @@ void ImGuiRenderer::renderDebugOverlay(const std::vector<RenderView *> &renderVi
renderDrawList(ImGui::GetDrawData());
}
-void ImGuiRenderer::setCapabilities(const QString &capabilities)
+void Qt3DRRD::ImGuiRenderer::setCapabilities(const QString &capabilities)
{
m_capabilities = capabilities.toLatin1();
}
-void ImGuiRenderer::showGLInfo()
+void Qt3DRRD::ImGuiRenderer::showGLInfo()
{
ImGui::Begin("Open GL Details", &m_showGLInfoWindow);
ImGui::Text("%s", m_capabilities.data());
ImGui::End();
}
-void ImGuiRenderer::showRenderDetails(const std::vector<RenderView *> &renderViews)
+void Qt3DRRD::ImGuiRenderer::showRenderDetails(const std::vector<Qt3DRR::OpenGL::RenderView *> &renderViews)
{
ImGui::Begin("Render Views", &m_showRenderDetailsWindow);
int i = 1;
- for (const RenderView *view: renderViews) {
+ for (const Qt3DRR::OpenGL::RenderView *view : renderViews) {
QString label(QLatin1String("View ") + QString::number(i++));
if (ImGui::TreeNode(label.toLatin1().data())) {
ImGui::Text("Viewport: (%.1f, %.1f, %.1f, %.1f)", view->viewport().x(), view->viewport().y(),
@@ -311,7 +332,7 @@ void ImGuiRenderer::showRenderDetails(const std::vector<RenderView *> &renderVie
ImGui::Text("Clear Stencil Value: %d", view->clearStencilValue());
int j = 1;
- view->forEachCommand([&] (const RenderCommand &command) {
+ view->forEachCommand([&](const Qt3DRR::OpenGL::RenderCommand &command) {
GeometryRenderer *rGeometryRenderer = m_renderer->nodeManagers()->data<GeometryRenderer, GeometryRendererManager>(command.m_geometryRenderer);
QString label = QString(QLatin1String("Command %1 {%2}")).arg(QString::number(j++), QString::number(rGeometryRenderer->peerId().id()));
if (ImGui::TreeNode(label.toLatin1().data())) {
@@ -334,7 +355,7 @@ void ImGuiRenderer::showRenderDetails(const std::vector<RenderView *> &renderVie
ImGui::End();
}
-void ImGuiRenderer::renderDrawList(ImDrawData *draw_data)
+void Qt3DRRD::ImGuiRenderer::renderDrawList(ImDrawData *draw_data)
{
// Avoid rendering when minimized, scale coordinates for retina displays (screen coordinates != framebuffer coordinates)
ImGuiIO& io = ImGui::GetIO();
@@ -431,7 +452,7 @@ void ImGuiRenderer::renderDrawList(ImDrawData *draw_data)
m_funcs->glScissor(last_scissor_box[0], last_scissor_box[1], static_cast<GLsizei>(last_scissor_box[2]), static_cast<GLsizei>(last_scissor_box[3]));
}
-bool ImGuiRenderer::createFontsTexture()
+bool Qt3DRRD::ImGuiRenderer::createFontsTexture()
{
// Build texture atlas
ImGuiIO& io = ImGui::GetIO();
@@ -457,7 +478,7 @@ bool ImGuiRenderer::createFontsTexture()
return true;
}
-bool ImGuiRenderer::createDeviceObjects()
+bool Qt3DRRD::ImGuiRenderer::createDeviceObjects()
{
auto *glContext = m_renderer->submissionContext()->openGLContext();
if (glContext->format().majorVersion() < 3) {
@@ -575,7 +596,7 @@ bool ImGuiRenderer::createDeviceObjects()
return true;
}
-bool ImGuiRenderer::newFrame(const RenderView *renderView)
+bool Qt3DRRD::ImGuiRenderer::newFrame(const Qt3DRR::OpenGL::RenderView *renderView)
{
if (!m_funcs)
m_funcs = m_renderer->submissionContext()->openGLContext()->extraFunctions();
@@ -611,7 +632,7 @@ bool ImGuiRenderer::newFrame(const RenderView *renderView)
return true;
}
-void ImGuiRenderer::onMouseChange(QMouseEvent *event)
+void Qt3DRRD::ImGuiRenderer::onMouseChange(QMouseEvent *event)
{
ImGuiIO& io = ImGui::GetIO();
io.MousePos = ImVec2(event->pos().x(), event->pos().y());
@@ -620,14 +641,14 @@ void ImGuiRenderer::onMouseChange(QMouseEvent *event)
m_mousePressed[2] = event->buttons() & Qt::MiddleButton;
}
-void ImGuiRenderer::onWheel(QWheelEvent *event)
+void Qt3DRRD::ImGuiRenderer::onWheel(QWheelEvent *event)
{
// 5 lines per unit
m_mouseWheelH += event->pixelDelta().x() / (ImGui::GetTextLineHeight());
m_mouseWheel += event->pixelDelta().y() / (5.f * ImGui::GetTextLineHeight());
}
-void ImGuiRenderer::onKeyPressRelease(QKeyEvent *event)
+void Qt3DRRD::ImGuiRenderer::onKeyPressRelease(QKeyEvent *event)
{
ImGuiIO& io = ImGui::GetIO();
if (keyMap.contains(event->key()))
@@ -652,7 +673,7 @@ void ImGuiRenderer::onKeyPressRelease(QKeyEvent *event)
#endif
}
-void ImGuiRenderer::processEvent(QEvent *event)
+void Qt3DRRD::ImGuiRenderer::processEvent(QEvent *event)
{
switch (event->type()) {
case QEvent::MouseMove: