Auf dieser Seite

QSGRendererInterface Class

Eine Schnittstelle, die Zugriff auf einige der grafikspezifischen API-internen Komponenten des Szenengraphen bietet. Mehr...

Header: #include <QSGRendererInterface>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick

Öffentliche Typen

enum GraphicsApi { Unknown, Software, OpenVG, OpenGL, Direct3D11, …, Null }
enum RenderMode { RenderMode2D, RenderMode2DNoDepthBuffer, RenderMode3D }
enum Resource { DeviceResource, CommandQueueResource, CommandListResource, PainterResource, RhiResource, …, GraphicsQueueIndexResource }
enum ShaderCompilationType { RuntimeCompilation, OfflineCompilation }
flags ShaderCompilationTypes
enum ShaderSourceType { ShaderSourceString, ShaderSourceFile, ShaderByteCode }
flags ShaderSourceTypes
enum ShaderType { UnknownShadingLanguage, GLSL, HLSL, RhiShader }

Öffentliche Funktionen

virtual void *getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const
virtual void *getResource(QQuickWindow *window, const char *resource) const
virtual QSGRendererInterface::GraphicsApi graphicsApi() const = 0
virtual QSGRendererInterface::ShaderCompilationTypes shaderCompilationType() const = 0
virtual QSGRendererInterface::ShaderSourceTypes shaderSourceType() const = 0
virtual QSGRendererInterface::ShaderType shaderType() const = 0

Statische öffentliche Elemente

bool isApiRhiBased(QSGRendererInterface::GraphicsApi api)

Ausführliche Beschreibung

Renderer-Schnittstellen ermöglichen den Zugriff auf grafikspezifische API-Funktionen im Szenengraphen. Solche internen Details werden normalerweise nicht offengelegt. Bei der Integration von benutzerdefiniertem Rendering über QSGRenderNode kann es jedoch erforderlich werden, bestimmte Werte abzufragen, beispielsweise das vom Szenengraphen verwendete Grafikgerät (z. B. das Direct3D- oder Vulkan-Gerät).

Die Funktionen von `QSGRendererInterface` sind unterschiedlich verfügbar. API- und Sprachabfragen wie ` graphicsApi()` oder ` shaderType()` sind immer verfügbar, d. h., es reicht aus, ein ` QQuickWindow ` oder ` QQuickView` zu erstellen, und die verwendete Grafik-API oder Shading-Sprache kann unmittelbar danach über ` QQuickWindow::rendererInterface()` abgefragt werden. Dies gewährleistet, dass Hilfsfunktionen wie der QML-Typ „ GraphicsInfo “ so früh wie möglich die korrekten Werte melden können, ohne dass bedingte Eigenschaftswerte – abhängig beispielsweise von „ shaderType()“ – zu unerwarteten Werten ausgewertet werden.

Engine-spezifische Zugriffsfunktionen wie ` getResource()` sind jedoch erst nach der Initialisierung des Szenengrafen verfügbar. Zudem kann es backend-spezifische Einschränkungen hinsichtlich des Zeitpunkts geben, zu dem solche Funktionen aufgerufen werden können. Die einzige Methode, bei der der Erfolg garantiert ist, besteht darin, sie aufzurufen, wenn das Rendern eines Knotens (d. h. die Vorbereitung der Befehlsliste für das nächste Bild) aktiv ist. In der Praxis bedeutet dies typischerweise ` QSGRenderNode::render()`.

Dokumentation zu Mitgliedstypen

enum QSGRendererInterface::GraphicsApi

KonstanteWertBeschreibung
QSGRendererInterface::Unknown0Es wird eine unbekannte Grafik-API verwendet
QSGRendererInterface::Software1Der 2D-Renderer „ Qt Quick “ wird verwendet
QSGRendererInterface::OpenVG2OpenVG über EGL
QSGRendererInterface::OpenGL (since Qt 5.14)3OpenGL ES 2.0 oder höher über eine Grafikabstraktionsschicht.
QSGRendererInterface::Direct3D11 (since Qt 5.14)4Direct3D 11 über eine Grafikabstraktionsschicht.
QSGRendererInterface::Direct3D12 (since Qt 6.6)8Direct3D 12 über eine Grafikabstraktionsschicht.
QSGRendererInterface::Vulkan (since Qt 5.14)5Vulkan 1.0 über eine Grafik-Abstraktionsschicht.
QSGRendererInterface::Metal (since Qt 5.14)6Metal über eine Grafikabstraktionsschicht.
QSGRendererInterface::Null (since Qt 5.14)7Null (keine Ausgabe) über eine Grafikabstraktionsschicht.

enum QSGRendererInterface::RenderMode

KonstanteWertBeschreibung
QSGRendererInterface::RenderMode2D0Normales 2D-Rendering
QSGRendererInterface::RenderMode2DNoDepthBuffer1Normales 2D-Rendering mit deaktiviertem Tiefenpuffer
QSGRendererInterface::RenderMode3D2Die Szene wird als Teil eines 3D-Graphen gerendert

enum QSGRendererInterface::Resource

KonstanteWertBeschreibung
QSGRendererInterface::DeviceResource0Die Ressource ist ein Zeiger auf das Grafikgerät, sofern zutreffend. Beispiele hierfür sind „ VkDevice * “, „ MTLDevice * “ oder „ ID3D11Device * “. Beachten Sie, dass bei Vulkan der zurückgegebene Wert ein Zeiger auf das „VkDevice“ ist, nicht das Handle selbst. Dies liegt daran, dass Vulkan-Handles möglicherweise keine Zeiger sind und eine andere Größe als die Zeigergröße der Architektur haben können, sodass ein einfaches Umwandeln in bzw. aus „ void * “ falsch ist.
QSGRendererInterface::CommandQueueResource1Die Ressource ist ein Zeiger auf die vom Szenengraphen verwendete Grafikbefehlswarteschlange, sofern zutreffend. Zum Beispiel ein ` VkQueue * ` oder ` MTLCommandQueue *`. Beachten Sie, dass bei Vulkan der zurückgegebene Wert ein Zeiger auf die `VkQueue` ist, nicht das Handle selbst.
QSGRendererInterface::CommandListResource2Die Ressource ist ein Zeiger auf die Befehlsliste oder den Puffer, die bzw. der vom Szenengraphen verwendet wird, sofern zutreffend. Zum Beispiel ein ` VkCommandBuffer * ` oder ` MTLCommandBuffer *`. Dieses Objekt hat eine begrenzte Gültigkeit und ist nur gültig, solange der Szenengraph den nächsten Frame vorbereitet. Beachten Sie, dass bei Vulkan der zurückgegebene Wert ein Zeiger auf den `VkCommandBuffer` ist, nicht das Handle selbst.
QSGRendererInterface::PainterResource3Die Ressource ist ein Zeiger auf den aktiven „ QPainter “, der vom Szenengraphen verwendet wird, wenn dieser mit dem Software-Backend ausgeführt wird.
QSGRendererInterface::RhiResource (since Qt 5.14)4Die Ressource ist ein Zeiger auf die vom Szenengrafen verwendete „ QRhi “-Instanz, sofern zutreffend.
QSGRendererInterface::RhiSwapchainResource (since Qt 6.0)5Die Ressource ist ein Zeiger auf eine „QRhiSwapchain“-Instanz, die dem Fenster zugeordnet ist. Der Wert ist null, wenn das Fenster in Kombination mit „ QQuickRenderControl “ verwendet wird.
QSGRendererInterface::RhiRedirectCommandBuffer (since Qt 6.0)6Die Ressource ist ein Zeiger auf eine ` QRhiCommandBuffer `-Instanz, die dem Fenster und dessen ` QQuickRenderControl` zugeordnet ist. Der Wert ist `null`, wenn das Fenster nicht mit einem ` QQuickRenderControl` verknüpft ist.
QSGRendererInterface::RhiRedirectRenderTarget (since Qt 6.0)7Die Ressource ist ein Zeiger auf eine „ QRhiTextureRenderTarget “-Instanz, die dem Fenster und dessen „ QQuickRenderControl “ zugeordnet ist. Der Wert ist null, wenn das Fenster keinem „ QQuickRenderControl “ zugeordnet ist. Beachten Sie, dass der Wert stets das Haupt-Textur-Renderziel widerspiegelt und nicht von der „ Qt Quick “-Szene abhängt, d. h., er berücksichtigt keine zusätzlichen, auf Texturziele ausgerichteten Render-Durchläufe, die von „ ShaderEffect “- oder „ QQuickItem “-Ebenen generiert werden.
QSGRendererInterface::PhysicalDeviceResource (since Qt 5.14)8Die Ressource ist ein Zeiger auf das vom Szenengrafikobjekt verwendete physikalische Geräteobjekt, sofern zutreffend. Zum Beispiel ein VkPhysicalDevice *. Beachten Sie, dass bei Vulkan der zurückgegebene Wert ein Zeiger auf das VkPhysicalDevice ist, nicht das Handle selbst.
QSGRendererInterface::OpenGLContextResource (since Qt 5.14)9Die Ressource ist ein Zeiger auf das vom Szenengrafikobjekt (im Render-Thread) verwendete „ QOpenGLContext “, sofern zutreffend.
QSGRendererInterface::DeviceContextResource (since Qt 5.14)10Die Ressource ist ein Zeiger auf den vom Szenengrafikbaum verwendeten Gerätekontext, sofern zutreffend. Zum Beispiel ein ` ID3D11DeviceContext *`.
QSGRendererInterface::CommandEncoderResource (since Qt 5.14)11Die Ressource ist ein Zeiger auf das aktuell aktive Render-Befehls-Encoder-Objekt, das vom Szenengraphen verwendet wird, sofern zutreffend. Zum Beispiel ein ` MTLRenderCommandEncoder *`. Dieses Objekt hat eine begrenzte Gültigkeitsdauer und ist nur gültig, solange der Szenengraph einen Render-Durchlauf für das nächste Bild aufzeichnet.
QSGRendererInterface::VulkanInstanceResource (since Qt 5.14)12Die Ressource ist ein Zeiger auf den vom Szenengraphen verwendeten „ QVulkanInstance “, sofern zutreffend.
QSGRendererInterface::RenderPassResource (since Qt 5.14)13Die Ressource ist ein Zeiger auf den vom Szenengrafikbaum verwendeten Hauptrenderdurchlauf, der die Farb- und Tiefen-/Stencil-Anhänge sowie deren Verwendung beschreibt. Beispielsweise ein „ VkRenderPass * “. Beachten Sie, dass der Wert stets das Haupt-Renderziel widerspiegelt (entweder das Fenster auf dem Bildschirm oder die Textur QQuickRenderControl umleitet) und nicht von der „ Qt Quick “-Szene abhängt, d. h., er berücksichtigt keine zusätzlichen, auf Texturen ausgerichteten Render-Pässe, die von „ ShaderEffect “- oder „ QQuickItem “-Ebenen erzeugt werden.
QSGRendererInterface::RedirectPaintDevice (since Qt 6.4)14Die Ressource ist ein Zeiger auf eine Instanz von „ QPaintDevice “, die dem Fenster und dessen „ QQuickRenderControl “ zugeordnet ist. Der Wert ist null, wenn das Fenster keinem „ QQuickRenderControl “ zugeordnet ist.
QSGRendererInterface::GraphicsQueueFamilyIndexResource (since Qt 6.6)15Die Ressource ist ein Zeiger auf den Index der vom Szenengrafikbaum verwendeten Grafikwarteschlangenfamilie, sofern zutreffend. Bei Vulkan ist dies ein Zeiger auf einen uint32_t -Indexwert.
QSGRendererInterface::GraphicsQueueIndexResource (since Qt 6.6)16Die Ressource ist ein Zeiger auf den vom Szenengraphen verwendeten Grafikwarteschlangenindex (uint32_t), sofern zutreffend. Bei Vulkan ist dies ein Zeiger auf einen uint32_t -Indexwert, bei dem es sich in der Praxis um den Index der VkQueue handelt, der für CommandQueueResource gemeldet wird.

enum QSGRendererInterface::ShaderCompilationType
flags QSGRendererInterface::ShaderCompilationTypes

KonstanteWertBeschreibung
QSGRendererInterface::RuntimeCompilation0x01Die Laufzeitkompilierung von Shader-Quellcode wird unterstützt
QSGRendererInterface::OfflineCompilation0x02Vorkompilierter Bytecode wird unterstützt

Der Typ „ShaderCompilationTypes“ ist ein typedef für QFlags<ShaderCompilationType>. Er speichert eine OR-Kombination von ShaderCompilationType-Werten.

enum QSGRendererInterface::ShaderSourceType
flags QSGRendererInterface::ShaderSourceTypes

KonstanteWertBeschreibung
QSGRendererInterface::ShaderSourceString0x01Der Shader-Quellcode kann als Zeichenkette in den entsprechenden Eigenschaften von ShaderEffect
QSGRendererInterface::ShaderSourceFile0x02Lokale oder Ressourcendateien, die Shader-Quellcode enthalten, werden unterstützt
QSGRendererInterface::ShaderByteCode0x04Lokale Dateien oder Ressourcendateien, die Shader-Bytecode enthalten, werden unterstützt

Der Typ „ShaderSourceTypes“ ist ein typedef für QFlags<ShaderSourceType>. Er speichert eine OR-Kombination von ShaderSourceType-Werten.

enum QSGRendererInterface::ShaderType

KonstanteWertBeschreibung
QSGRendererInterface::UnknownShadingLanguage0Noch nicht bekannt, da kein Fenster und kein Szenengrafik zugeordnet sind
QSGRendererInterface::GLSL1GLSL oder GLSL ES
QSGRendererInterface::HLSL2HLSL
QSGRendererInterface::RhiShader (since Qt 5.14)3Verwendet „ QShader “-Instanzen, die Shader-Varianten für mehrere Zielsprachen und Zwischenformate enthalten.

Dokumentation der Mitgliedsfunktionen

[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const

Fragt eine Grafik resource -Ressource unter window ab. Gibt „null“ zurück, wenn die betreffende Ressource nicht unterstützt wird oder nicht verfügbar ist.

Bei Erfolg ist der zurückgegebene Zeiger entweder ein direkter Zeiger auf eine Schnittstelle oder ein Zeiger auf ein undurchsichtiges Handle, das zunächst dereferenziert werden muss (z. B. VkDevice dev = *static_cast<VkDevice *>(result)). Letzteres ist erforderlich, da solche Handles eine andere Größe als ein Zeiger haben können.

Hinweis: Das Eigentumsrecht am zurückgegebenen Zeiger wird niemals auf den Aufrufer übertragen.

Hinweis: Diese Funktion darf nur im Render-Thread aufgerufen werden.

[virtual] void *QSGRendererInterface::getResource(QQuickWindow *window, const char *resource) const

Fragt eine Grafikressource ab. „ resource “ ist ein backend-spezifischer Schlüssel. Dadurch können auch zukünftige Ressourcen unterstützt werden, die nicht in der Enumeration „Resource“ aufgeführt sind.

Hinweis: Das Eigentumsrecht am zurückgegebenen Zeiger wird niemals auf den Aufrufer übertragen.

Hinweis: Diese Funktion darf nur im Render-Thread aufgerufen werden.

[pure virtual] QSGRendererInterface::GraphicsApi QSGRendererInterface::graphicsApi() const

Gibt die Grafik-API zurück, die vom Szenengrafik- Qt Quick verwendet wird.

Hinweis: Diese Funktion kann in jedem Thread aufgerufen werden.

[static] bool QSGRendererInterface::isApiRhiBased(QSGRendererInterface::GraphicsApi api)

Gibt „true“ zurück, wenn „ api “ auf einer Grafik-Abstraktionsschicht (QRhi) basiert, anstatt die native Grafik-API direkt aufzurufen.

Hinweis: Diese Funktion kann in jedem Thread aufgerufen werden.

[pure virtual] QSGRendererInterface::ShaderCompilationTypes QSGRendererInterface::shaderCompilationType() const

Gibt eine Bitmaske der Shader-Kompilierungsansätze zurück, die vom „ Qt Quick “-Backend unterstützt werden, das die Anwendung verwendet.

Hinweis: Diese Funktion kann in jedem Thread aufgerufen werden.

Siehe auch „ QtQuick::GraphicsInfo “.

[pure virtual] QSGRendererInterface::ShaderSourceTypes QSGRendererInterface::shaderSourceType() const

Gibt eine Bitmaske der unterstützten Möglichkeiten zur Bereitstellung von Shader-Quellen in „ ShaderEffect “-Elementen zurück.

Hinweis: Diese Funktion kann in jedem Thread aufgerufen werden.

Siehe auch „ QtQuick::GraphicsInfo “.

[pure virtual] QSGRendererInterface::ShaderType QSGRendererInterface::shaderType() const

Gibt die Shading-Sprache zurück, die vom „ Qt Quick “-Backend unterstützt wird, das die Anwendung verwendet.

Hinweis: Diese Funktion kann in jedem Thread aufgerufen werden.

Siehe auch „ QtQuick::GraphicsInfo “.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.