aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/scenegraph/rendernode
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@theqtcompany.com>2016-05-02 21:49:43 +0200
committerLaszlo Agocs <laszlo.agocs@theqtcompany.com>2016-05-03 10:12:42 +0000
commit0ea01a229b42eacee340cd1dc6895a7de99ea895 (patch)
tree0c0922d20dd00f88163476fe01f4358879dd31ee /examples/quick/scenegraph/rendernode
parent84fb780d830764bcaa53478a5c5c464865897640 (diff)
Use RendererInfo in the rendernode example
Simplifies things a lot. Change-Id: I57fbedeeb99884aa5b14532c7be33f6373551b5f Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'examples/quick/scenegraph/rendernode')
-rw-r--r--examples/quick/scenegraph/rendernode/customrenderitem.cpp53
-rw-r--r--examples/quick/scenegraph/rendernode/customrenderitem.h15
-rw-r--r--examples/quick/scenegraph/rendernode/main.qml5
3 files changed, 4 insertions, 69 deletions
diff --git a/examples/quick/scenegraph/rendernode/customrenderitem.cpp b/examples/quick/scenegraph/rendernode/customrenderitem.cpp
index 124a57a5d6..dbb9ee79e8 100644
--- a/examples/quick/scenegraph/rendernode/customrenderitem.cpp
+++ b/examples/quick/scenegraph/rendernode/customrenderitem.cpp
@@ -56,10 +56,8 @@ void CustomRenderNode::render(const RenderState *state)
if (!ri)
return;
- m_api = ri->graphicsAPI();
-
if (!m_renderer) {
- switch (m_api) {
+ switch (ri->graphicsAPI()) {
case QSGRendererInterface::OpenGL:
#ifndef QT_NO_OPENGL
m_renderer = new OpenGLRenderer(m_item, this);
@@ -97,13 +95,6 @@ CustomRenderItem::CustomRenderItem(QQuickItem *parent)
{
// Our item shows something so set the flag.
setFlag(ItemHasContents);
-
- // We want the graphics API type to be exposed to QML. The value is easy to
- // get during rendering on the render thread in CustomRenderNode::render(),
- // but is more tricky here since the item gets a window associated later,
- // which in turn will get the underlying scenegraph started at some later
- // point. So defer.
- connect(this, &QQuickItem::windowChanged, this, &CustomRenderItem::onWindowChanged);
}
QSGNode *CustomRenderItem::updatePaintNode(QSGNode *node, UpdatePaintNodeData *)
@@ -114,45 +105,3 @@ QSGNode *CustomRenderItem::updatePaintNode(QSGNode *node, UpdatePaintNodeData *)
return n;
}
-
-void CustomRenderItem::onWindowChanged(QQuickWindow *w)
-{
- if (w) {
- if (w->isSceneGraphInitialized())
- updateGraphicsAPI();
- else
- connect(w, &QQuickWindow::sceneGraphInitialized, this, &CustomRenderItem::updateGraphicsAPI);
- } else {
- updateGraphicsAPI();
- }
-}
-
-void CustomRenderItem::updateGraphicsAPI()
-{
- QString newAPI;
- if (!window()) {
- newAPI = QLatin1String("[no window]");
- } else {
- QSGRendererInterface *ri = window()->rendererInterface();
- if (!ri) {
- newAPI = QLatin1String("[no renderer interface]");
- } else {
- switch (ri->graphicsAPI()) {
- case QSGRendererInterface::OpenGL:
- newAPI = QLatin1String("OpenGL");
- break;
- case QSGRendererInterface::Direct3D12:
- newAPI = QLatin1String("D3D12");
- break;
- default:
- newAPI = QString(QLatin1String("[unsupported graphics API %1]")).arg(ri->graphicsAPI());
- break;
- }
- }
- }
-
- if (newAPI != m_api) {
- m_api = newAPI;
- emit graphicsAPIChanged();
- }
-}
diff --git a/examples/quick/scenegraph/rendernode/customrenderitem.h b/examples/quick/scenegraph/rendernode/customrenderitem.h
index fb4c392148..b9828adaeb 100644
--- a/examples/quick/scenegraph/rendernode/customrenderitem.h
+++ b/examples/quick/scenegraph/rendernode/customrenderitem.h
@@ -63,31 +63,16 @@ public:
private:
QQuickItem *m_item;
- int m_api;
CustomRenderer *m_renderer = nullptr;
};
class CustomRenderItem : public QQuickItem
{
Q_OBJECT
- Q_PROPERTY(QString graphicsAPI READ graphicsAPI NOTIFY graphicsAPIChanged)
public:
CustomRenderItem(QQuickItem *parent = nullptr);
-
QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *) override;
-
- QString graphicsAPI() const { return m_api; }
-
-private slots:
- void onWindowChanged(QQuickWindow *w);
- void updateGraphicsAPI();
-
-signals:
- void graphicsAPIChanged();
-
-private:
- QString m_api;
};
#endif
diff --git a/examples/quick/scenegraph/rendernode/main.qml b/examples/quick/scenegraph/rendernode/main.qml
index 32154cc930..bae77aabd3 100644
--- a/examples/quick/scenegraph/rendernode/main.qml
+++ b/examples/quick/scenegraph/rendernode/main.qml
@@ -38,7 +38,7 @@
**
****************************************************************************/
-import QtQuick 2.0
+import QtQuick 2.8 // for RendererInfo
import SceneGraphRendering 2.0
Item {
@@ -89,7 +89,8 @@ Item {
anchors.right: renderer.right
anchors.margins: 20
wrapMode: Text.WordWrap
- text: "Custom rendering via the graphics API " + renderer.graphicsAPI
+ property int api: RendererInfo.api
+ text: "Custom rendering via the graphics API " + (api === RendererInfo.OpenGL ? "OpenGL" : (api === RendererInfo.Direct3D12 ? "Direct3D 12" : ""))
color: "yellow"
}
}