aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/scenegraph/rendernode/customrenderitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/quick/scenegraph/rendernode/customrenderitem.cpp')
-rw-r--r--examples/quick/scenegraph/rendernode/customrenderitem.cpp64
1 files changed, 18 insertions, 46 deletions
diff --git a/examples/quick/scenegraph/rendernode/customrenderitem.cpp b/examples/quick/scenegraph/rendernode/customrenderitem.cpp
index dbb9ee79e8..4070a86395 100644
--- a/examples/quick/scenegraph/rendernode/customrenderitem.cpp
+++ b/examples/quick/scenegraph/rendernode/customrenderitem.cpp
@@ -45,63 +45,35 @@
#include "openglrenderer.h"
#include "d3d12renderer.h"
-CustomRenderNode::~CustomRenderNode()
+CustomRenderItem::CustomRenderItem(QQuickItem *parent)
+ : QQuickItem(parent)
{
- releaseResources();
+ // Our item shows something so set the flag.
+ setFlag(ItemHasContents);
}
-void CustomRenderNode::render(const RenderState *state)
+QSGNode *CustomRenderItem::updatePaintNode(QSGNode *node, UpdatePaintNodeData *)
{
- QSGRendererInterface *ri = m_item->window()->rendererInterface();
- if (!ri)
- return;
-
- if (!m_renderer) {
+ QSGRenderNode *n = static_cast<QSGRenderNode *>(node);
+ if (!n) {
+ QSGRendererInterface *ri = window()->rendererInterface();
+ if (!ri)
+ return nullptr;
switch (ri->graphicsAPI()) {
- case QSGRendererInterface::OpenGL:
+ case QSGRendererInterface::OpenGL:
#ifndef QT_NO_OPENGL
- m_renderer = new OpenGLRenderer(m_item, this);
+ n = new OpenGLRenderNode(this);
+ break;
#endif
- break;
- case QSGRendererInterface::Direct3D12:
+ case QSGRendererInterface::Direct3D12:
#ifdef HAS_D3D12
- m_renderer = new D3D12Renderer(m_item, this);
+ n = new D3D12RenderNode(this);
+ break;
#endif
- break;
- default:
- break;
+ default:
+ return nullptr;
}
- Q_ASSERT(m_renderer);
- m_renderer->init();
}
- m_renderer->render(state);
-}
-
-// No need to reimplement changedStates() since our rendering is so simple,
-// without involving any state changes.
-
-void CustomRenderNode::releaseResources()
-{
- if (!m_renderer)
- return;
-
- delete m_renderer;
- m_renderer = nullptr;
-}
-
-CustomRenderItem::CustomRenderItem(QQuickItem *parent)
- : QQuickItem(parent)
-{
- // Our item shows something so set the flag.
- setFlag(ItemHasContents);
-}
-
-QSGNode *CustomRenderItem::updatePaintNode(QSGNode *node, UpdatePaintNodeData *)
-{
- CustomRenderNode *n = static_cast<CustomRenderNode *>(node);
- if (!node)
- n = new CustomRenderNode(this);
-
return n;
}