Qt Quick OpenVG-Anpassung
Die OpenVG-Anpassung ist ein alternativer Renderer für Qt Quick 2, der den Inhalt des Szenengraphen mithilfe von OpenVG-Befehlen rendert, um hardwarebeschleunigte 2D-Vektor- und Rastergrafiken bereitzustellen. Ähnlich wie bei der Software-Anpassung stehen einige Funktionen und Optimierungen nicht mehr zur Verfügung. Die meisten Qt Quick 2-Anwendungen laufen jedoch ohne Änderungen, wobei Versuche, nicht unterstützte Funktionen zu nutzen, ignoriert werden.
EGL-Anforderung
Im Gegensatz zum Standard-OpenGL-Renderer gibt es keine integrierte Unterstützung zum Abrufen eines OpenVG-Kontexts. Das bedeutet, dass der Renderer für die Anforderung und Verwaltung des aktuellen Kontexts verantwortlich ist. Dazu wird EGL direkt im OpenVG-Renderer verwendet. Folglich kann der OpenVG-Renderer nur mit Plattform-Plugins verwendet werden, die die Erstellung von QWindows mit Unterstützung für „ QSurfaceFormat::OpenVG “ ermöglichen. Aus diesem Fenster heraus kann der Renderer eine EGLSurface abrufen, die dann zusammen mit einem EGLContext zum Rendern von OpenVG-Inhalten verwendet werden kann.
Renderer
Der OpenVG-Renderer nutzt die OpenVG-API, um Befehle und Daten an eine Vektor-GPU zu senden, die den Szenengraphen beschleunigt rendert und so die Grafikwiedergabe von der CPU entlastet. Viele Operationen wie das Rendern von Rechtecken und Schriftzeichen eignen sich ideal für OpenVG, da sie als Pfade dargestellt werden können, die umrandet und gefüllt werden. Das Rendern von Szenengraph-Elementen, bei denen normalerweise Texturen zum Einsatz kommen, wird im OpenVG-Renderer mithilfe von VGImage abgewickelt. Wenn Sie zudem auf Offscreen-Oberflächen rendern (wie bei Layern), wird der Szenen-Teilbaum in ein VGImage gerendert, das in der Szene wiederverwendet werden kann.
Render-Schleife
Der OpenVG-Renderer spiegelt das Verhalten der Basic-Render-Schleife wider und führt alle OpenVG-Befehle in einem einzigen Thread aus.
Weitere Informationen zu Render-Schleifen finden Sie unter „Qt Quick -Szenenbaum“.
Shader-Effekte
ShaderEffect Komponenten in „ QtQuick 2“ können von der OpenVG-Anpassung nicht gerendert werden. Zwar ist es möglich, „ ShaderEffectSource “ und „QML Item Layers“ (beides Offscreen-Oberflächen) zu verwenden, doch lassen sich auf diese keine Shader-Effekte über das Element „ ShaderEffect “ anwenden. Dies liegt daran, dass OpenVG keine API für die Anwendung von Shader-Operationen pro Vertex und pro Fragment bietet. Sie können jedoch möglicherweise die Image-Filter-Operationen in der OpenVG-API nutzen, um Effekte zu erzielen, die denen ähneln, die 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. Entfernen Sie Partikel nach Möglichkeit vollständig aus der Szene. Andernfalls erfordern sie weiterhin eine gewisse Verarbeitung, auch wenn sie nicht sichtbar sind.
Text-Rendering
Das Rendern von Text mit der OpenVG-Anpassung basiert auf dem Rendern der Glyphenpfade und verwendet im Gegensatz zum OpenGL-Backend nicht die Distanzfeld-Technik.
Perspektivische Transformationen
Die OpenVG-API erlaubt keine Transformation von Pfaden mit nicht-affinen Transformationen, dies ist jedoch mit ` Qt Quick` möglich. Wenn Sie daher Komponenten wie Rechtecke und Text unter Anwendung von perspektivischen Transformationen rendern, rendert das OpenVG-Backend zunächst in ein `VGImage`, bevor die Transformationen angewendet werden. Dieses Verhalten beansprucht zur Laufzeit mehr Speicher und dauert länger; vermeiden Sie es nach Möglichkeit.
© 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.