Qt Quick OpenVG-Anpassung

Die OpenVG-Anpassung ist ein alternativer Renderer für Qt Quick 2, der den Inhalt des Szenengraphs mit OpenVG-Befehlen rendert, um hardwarebeschleunigte 2D-Vektor- und Rastergrafiken zu erzeugen. Ähnlich wie bei der Software-Anpassung sind einige Funktionen und Optimierungen nicht mehr verfügbar. Die meisten Qt Quick 2 Anwendungen laufen ohne Änderungen, jedoch werden alle Versuche, nicht unterstützte Funktionen zu verwenden, ignoriert.

EGL-Anforderung

Im Gegensatz zum Standard-OpenGL-Renderer gibt es keine eingebaute Unterstützung für den Erwerb eines OpenVG-Kontextes. Dies bedeutet, dass der Renderer für das Anfordern und Verwalten des aktuellen Kontexts verantwortlich ist. Um dies zu tun, verwenden Sie EGL direkt im OpenVG-Renderer. Folglich kann der OpenVG-Renderer nur mit Plattform-Plugins verwendet werden, die die Erstellung von QWindows mit Unterstützung für QSurfaceFormat::OpenVG unterstützen. Von diesem Fenster kann der Renderer eine EGLSurface erhalten, die dann mit einem EGLContext zum Rendern von OpenVG-Inhalten verwendet werden kann.

Renderer

Der OpenVG-Renderer verwendet die OpenVG-API, um Befehle und Daten an eine Vector-GPU zu senden, die den Szenengraphen auf beschleunigte Weise rendert und die CPU vom Grafik-Rendering entlastet. Viele Operationen wie das Rendern von Rechtecken und Schriftzeichen sind ideal für OpenVG, da sie als Pfade dargestellt werden können, die gestrichelt und gefüllt werden. Das Rendern von Szenengraph-Elementen, die normalerweise Texturen beinhalten, wird im OpenVG-Renderer mit VGImage behandelt. Außerdem wird beim Rendern auf Offscreen-Oberflächen (wie bei Layern) der Teilbaum der Szene in ein VGImage gerendert, das in der Szene wiederverwendet werden kann.

Rendering-Schleife

Der OpenVG-Renderer spiegelt das Verhalten der Basic-Renderschleife wider und führt alle OpenVG-Befehle in einem einzigen Thread aus.

Für weitere Informationen über Renderloops siehe Qt Quick Scene Graph.

Shader-Effekte

ShaderEffect Komponenten in QtQuick 2 können nicht durch die OpenVG-Anpassung gerendert werden. Es ist zwar möglich, ShaderEffectSource und QML Item Layers (beides Offscreen-Oberflächen) zu verwenden, aber es ist nicht möglich, Shader-Effekte über das Element ShaderEffect auf sie anzuwenden. Das liegt daran, dass OpenVG eine API für die Anwendung von Shader-Operationen pro Vertex und pro Fragment fehlt. Sie können jedoch die Vorteile der Bildfilter-Operationen in der OpenVG-API nutzen, um Effekte zu erhalten, die dem ähneln, was ShaderEffects in benutzerdefinierten Elementen bietet. Um benutzerdefiniertes OpenVG-Rendering zu integrieren, verwenden Sie QSGRenderNode in Kombination mit QSGRendererInterface.

Partikeleffekte

Es ist nicht möglich, Partikeleffekte mit der OpenVG-Anpassung zu rendern. Wann immer möglich, entfernen Sie Partikel vollständig aus der Szene. Andernfalls benötigen sie immer noch eine gewisse Verarbeitung, auch wenn sie nicht sichtbar sind.

Rendering von Text

Das Rendern von Text mit der OpenVG-Anpassung basiert auf dem Rendern der Glyphenpfade und verwendet nicht die Technik der Abstandsfelder, wie es beim OpenGL-Backend der Fall ist.

Perspektivische Transformationen

Die OpenVG-API erlaubt es nicht, Pfade mit nicht-affinen Transformationen zu transformieren, aber es ist mit Qt Quick möglich. Wenn Sie Komponenten mit Pfaden wie Rechtecke und Text rendern und dabei perspektivische Transformationen anwenden, rendert das OpenVG-Backend zunächst in ein VGImage, bevor es Transformationen anwendet. Dieses Verhalten verbraucht mehr Speicher zur Laufzeit und nimmt mehr Zeit in Anspruch; vermeiden Sie es, wenn möglich.

© 2025 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.