diff options
Diffstat (limited to 'src/render/frontend/qrenderaspect.cpp')
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 27 |
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); |