summaryrefslogtreecommitdiffstats
path: root/src/render/frontend/qrenderaspect.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/frontend/qrenderaspect.cpp')
-rw-r--r--src/render/frontend/qrenderaspect.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp
index d8551fd1b..da5abe4ac 100644
--- a/src/render/frontend/qrenderaspect.cpp
+++ b/src/render/frontend/qrenderaspect.cpp
@@ -41,7 +41,7 @@
#include "qrenderaspect_p.h"
#include <Qt3DRender/private/nodemanagers_p.h>
-#include <Qt3DRender/private/renderer_p.h>
+#include <Qt3DRender/private/abstractrenderer_p.h>
#include <Qt3DRender/private/scenemanager_p.h>
#include <Qt3DRender/private/geometryrenderermanager_p.h>
@@ -56,8 +56,10 @@
#include <Qt3DRender/qmesh.h>
#include <Qt3DRender/qparameter.h>
#include <Qt3DRender/qrenderpassfilter.h>
+#include <Qt3DRender/qrenderpass.h>
#include <Qt3DRender/qrendertargetselector.h>
#include <Qt3DRender/qtechniquefilter.h>
+#include <Qt3DRender/qtechnique.h>
#include <Qt3DRender/qviewport.h>
#include <Qt3DRender/qrendertarget.h>
#include <Qt3DRender/qclearbuffers.h>
@@ -103,7 +105,7 @@
#include <Qt3DRender/private/cameralens_p.h>
#include <Qt3DRender/private/filterkey_p.h>
#include <Qt3DRender/private/entity_p.h>
-#include <Qt3DRender/private/renderer_p.h>
+#include <Qt3DRender/private/abstractrenderer_p.h>
#include <Qt3DRender/private/shaderdata_p.h>
#include <Qt3DRender/private/renderpassfilternode_p.h>
#include <Qt3DRender/private/rendertargetselectornode_p.h>
@@ -165,6 +167,8 @@
#include <private/qrenderpluginfactory_p.h>
#include <private/qrenderplugin_p.h>
+#include <Qt3DRender/private/qrendererpluginfactory_p.h>
+
#include <Qt3DCore/qentity.h>
#include <Qt3DCore/qtransform.h>
@@ -599,8 +603,9 @@ void QRenderAspect::onRegistered()
Q_D(QRenderAspect);
d->m_nodeManagers = new Render::NodeManagers();
- // TO DO: Load proper Renderer class based on Qt configuration preferences
- d->m_renderer = new Render::Renderer(d->m_renderType);
+ // Load proper Renderer class based on Qt configuration preferences
+ d->m_renderer = d->loadRendererPlugin();
+ Q_ASSERT(d->m_renderer);
d->m_renderer->setScreen(d->m_screen);
d->m_renderer->setNodeManagers(d->m_nodeManagers);
@@ -689,6 +694,20 @@ void QRenderAspectPrivate::loadSceneParsers()
}
}
+Render::AbstractRenderer *QRenderAspectPrivate::loadRendererPlugin()
+{
+ // Note: for now we load the first renderer plugin that is successfully loaded
+ // In the future we might want to offer the user a way to hint at which renderer
+ // plugin would best be loaded
+ const QStringList keys = Render::QRendererPluginFactory::keys();
+ for (const QString &key : keys) {
+ Render::AbstractRenderer *renderer = Render::QRendererPluginFactory::create(key, m_renderType);
+ if (renderer)
+ return renderer;
+ }
+ return nullptr;
+}
+
void QRenderAspectPrivate::loadRenderPlugin(const QString &pluginName)
{
Q_Q(QRenderAspect);