diff options
Diffstat (limited to 'src/render/backend')
-rw-r--r-- | src/render/backend/qrenderaspect.cpp | 2 | ||||
-rw-r--r-- | src/render/backend/renderparameter.cpp | 32 | ||||
-rw-r--r-- | src/render/backend/renderparameter_p.h | 16 |
3 files changed, 3 insertions, 47 deletions
diff --git a/src/render/backend/qrenderaspect.cpp b/src/render/backend/qrenderaspect.cpp index 1f2cd7175..03026118d 100644 --- a/src/render/backend/qrenderaspect.cpp +++ b/src/render/backend/qrenderaspect.cpp @@ -212,7 +212,7 @@ void QRenderAspect::registerBackendTypes() registerBackendType<QSortMethod>(QBackendNodeFunctorPtr(new Render::FrameGraphNodeFunctor<Render::SortMethod, QSortMethod>(d->m_renderer->frameGraphManager()))); registerBackendType<QFrameGraphSelector>(QBackendNodeFunctorPtr(new Render::FrameGraphNodeFunctor<Render::FrameGraphSubtreeSelector, QFrameGraphSelector>(d->m_renderer->frameGraphManager()))); registerBackendType<QFrameGraph>(QBackendNodeFunctorPtr(new Render::FrameGraphComponentFunctor(d->m_renderer))); - registerBackendType<QParameter>(QBackendNodeFunctorPtr(new Render::RenderParameterFunctor(d->m_renderer->parameterManager(), d->m_renderer->shaderDataManager(), d->m_renderer->textureManager()))); + registerBackendType<QParameter>(QBackendNodeFunctorPtr(new Render::RenderNodeFunctor<Render::RenderParameter, Render::ParameterManager>(d->m_renderer->parameterManager()))); registerBackendType<QShaderData>(QBackendNodeFunctorPtr(new Render::RenderShaderDataFunctor(d->m_renderer->shaderDataManager()))); } diff --git a/src/render/backend/renderparameter.cpp b/src/render/backend/renderparameter.cpp index 97716e843..46f635177 100644 --- a/src/render/backend/renderparameter.cpp +++ b/src/render/backend/renderparameter.cpp @@ -106,43 +106,15 @@ QVariant RenderParameter::toBackendValue(const QVariant &value) if (node == Q_NULLPTR) { return value; } else if (qobject_cast<QAbstractTextureProvider*>(node)) { - return QVariant::fromValue(m_textureManager->getOrCreateResource(node->id())); + return QVariant::fromValue(static_cast<RenderTexture*>(createBackendNode(node))); } else if (qobject_cast<QShaderData*>(node)) { - return QVariant::fromValue(m_shaderDataManager->getOrCreateResource(node->id())); + return QVariant::fromValue(static_cast<RenderShaderData*>(createBackendNode(node))); } else { qFatal("Texture and ShaderData are the only types of Node allowed as parameters"); return QVariant(); } } -RenderParameterFunctor::RenderParameterFunctor(ParameterManager *parameterManager, ShaderDataManager *shaderDataManager, TextureManager *textureManager) - : m_parameterManager(parameterManager) - , m_shaderDataManager(shaderDataManager) - , m_textureManager(textureManager) -{ -} - -QBackendNode *RenderParameterFunctor::create(QNode *frontend, const QBackendNodeFactory *factory) const -{ - HParameter parameterNodeHandle = m_parameterManager->getOrAcquireHandle(frontend->id()); - RenderParameter *parameter = m_parameterManager->data(parameterNodeHandle); - parameter->setFactory(factory); - parameter->setShaderDataManager(m_shaderDataManager); - parameter->setTextureManager(m_textureManager); - parameter->setPeer(frontend); - return parameter; -} - -QBackendNode *RenderParameterFunctor::get(QNode *frontend) const -{ - return m_parameterManager->lookupResource(frontend->id()); -} - -void RenderParameterFunctor::destroy(QNode *frontend) const -{ - m_parameterManager->releaseResource(frontend->id()); -} - } // Render } // Qt3D diff --git a/src/render/backend/renderparameter_p.h b/src/render/backend/renderparameter_p.h index 3c7f5d7f9..f883be627 100644 --- a/src/render/backend/renderparameter_p.h +++ b/src/render/backend/renderparameter_p.h @@ -79,22 +79,6 @@ private: QVariant m_value; }; -class RenderParameterFunctor : public QBackendNodeFunctor -{ -public: - explicit RenderParameterFunctor(ParameterManager *parameterManager, - ShaderDataManager *shaderDataManager, - TextureManager *textureManager); - QBackendNode *create(QNode *frontend, const QBackendNodeFactory *factory) const Q_DECL_OVERRIDE; - QBackendNode *get(QNode *frontend) const Q_DECL_OVERRIDE; - void destroy(QNode *frontend) const Q_DECL_OVERRIDE; - -private: - ParameterManager *m_parameterManager; - ShaderDataManager *m_shaderDataManager; - TextureManager *m_textureManager; -}; - } // Render } // Qt3D |