diff options
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/backend/abstractrenderer_p.h | 15 | ||||
-rw-r--r-- | src/render/frontend/qrenderapi.h | 1 | ||||
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 23 | ||||
-rw-r--r-- | src/render/frontend/qrenderaspect_p.h | 5 |
4 files changed, 16 insertions, 28 deletions
diff --git a/src/render/backend/abstractrenderer_p.h b/src/render/backend/abstractrenderer_p.h index 6f849128a..2eec1bc1b 100644 --- a/src/render/backend/abstractrenderer_p.h +++ b/src/render/backend/abstractrenderer_p.h @@ -69,6 +69,9 @@ class QScreen; class QOpenGLTexture; class QMouseEvent; class QKeyEvent; +class QRhi; +class QRhiRenderTarget; +class QRhiCommandBuffer; namespace Qt3DCore { class QAbstractFrameAdvanceService; @@ -118,9 +121,16 @@ public: }; Q_DECLARE_FLAGS(BackendNodeDirtySet, BackendNodeDirtyFlag) + enum RenderDriver { + Qt3D, + Scene3D, + }; + virtual void dumpInfo() const = 0; virtual API api() const = 0; + virtual void setRenderDriver(RenderDriver driver) = 0; + virtual RenderDriver renderDriver() const = 0; virtual qint64 time() const = 0; virtual void setTime(qint64 time) = 0; @@ -172,8 +182,11 @@ public: virtual QVariant executeCommand(const QStringList &args) = 0; - // For QtQuick rendering (Scene2D) + // For QtQuick rendering (Scene3D/2D) virtual void setOpenGLContext(QOpenGLContext *ctx) = 0; + virtual void setRHIContext(QRhi *ctx) = 0; + virtual void setDefaultRHIRenderTarget(QRhiRenderTarget *defaultTarget) = 0; + virtual void setRHICommandBuffer(QRhiCommandBuffer *commandBuffer) = 0; virtual void setScreen(QScreen *) {} virtual QScreen *screen() const { return nullptr; } virtual bool accessOpenGLTexture(Qt3DCore::QNodeId nodeId, QOpenGLTexture **texture, QMutex **lock, bool readonly) = 0; diff --git a/src/render/frontend/qrenderapi.h b/src/render/frontend/qrenderapi.h index fc046642a..df1a4a692 100644 --- a/src/render/frontend/qrenderapi.h +++ b/src/render/frontend/qrenderapi.h @@ -51,6 +51,7 @@ enum class API { Vulkan, DirectX, Metal, + RHI, Null }; diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp index bd6d7d831..3c5c2c053 100644 --- a/src/render/frontend/qrenderaspect.cpp +++ b/src/render/frontend/qrenderaspect.cpp @@ -630,29 +630,6 @@ QRenderAspect::~QRenderAspect() { } -// Called by Scene3DRenderer only -void QRenderAspectPrivate::renderInitialize(QOpenGLContext *context) -{ - if (m_renderer->api() == API::OpenGL) - m_renderer->setOpenGLContext(context); - m_renderer->initialize(); -} - -/*! \internal */ -void QRenderAspectPrivate::render(bool swapBuffers) -{ - m_renderer->render(swapBuffers); -} - -/* - * \internal - * Only called when rendering with QtQuick 2 and a Scene3D item - */ -void QRenderAspectPrivate::renderShutdown() -{ - m_renderer->shutdown(); -} - std::vector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time) { using namespace Render; diff --git a/src/render/frontend/qrenderaspect_p.h b/src/render/frontend/qrenderaspect_p.h index 71dcf0468..b1b7bedc3 100644 --- a/src/render/frontend/qrenderaspect_p.h +++ b/src/render/frontend/qrenderaspect_p.h @@ -71,7 +71,7 @@ QT_BEGIN_NAMESPACE class QSurface; class QScreen; - +class QRhi; namespace Qt3DRender { class QSceneImporter; @@ -113,9 +113,6 @@ public: void unregisterBackendTypes(); void loadSceneParsers(); void loadRenderPlugin(const QString &pluginName); - void renderInitialize(QOpenGLContext *context); - void render(bool swapBuffers = true); - void renderShutdown(); void registerBackendType(const QMetaObject &, const Qt3DCore::QBackendNodeMapperPtr &functor); std::vector<Qt3DCore::QAspectJobPtr> createGeometryRendererJobs() const; std::vector<Qt3DCore::QAspectJobPtr> createPreRendererJobs() const; |