- 1. Was ist das?
- 2. Wie man es benutzt
- 3. Grenzen
- 4. Ein Erlebnis
- 5. Fazit
- 6. Links
Ein interessantes Feature von Qt 5.10 ist ein neues Qt-Backend, das WebGL zum Rendern verwendet. Dadurch können Qt-Anwendungen (mit einigen Einschränkungen) in einem Webbrowser ausgeführt werden, der WebGL unterstützt.
Was ist das?
Das neue Backend verwendet WebGL, was für Web Graphic Library steht. WebGL ist eine JavaScript-API zum Rendern von 2D- und 3D-Grafiken in jedem kompatiblen Webbrowser ohne die Verwendung von Plugins. Die API ähnelt OpenGL ES 2.0 und kann auf HTML5- Canvas -Elementen verwendet werden.
Das neue Backend wird als technische Vorschaufunktion in Qt 5.10.0 eingeführt und in Alpha- und Beta-Versionen enthalten sein (derzeit ist Qt 5.10.0 eine Beta-Version in Phase 1).
Der neueste Quellcode ist auch in Qt git unter verfügbar http://code.qt.io/cgit/qt/qtwebglplugin.git/ .
Das Plugin wird entweder unter der GPLv3-Lizenz oder unter kommerziellen Lizenzen vertrieben. Bitte beachten Sie, dass es in der LGPL nicht verfügbar ist. Eine der Folgen der GPL-Lizenz ist, dass Ihr Anwendungscode von der GPL abgedeckt wird, wenn Sie (auch dynamisch) darauf verlinken.
Wie man es benutzt
Nehmen wir an, Sie haben Qt 5.10 mit dem WebGL-Plugin erstellt, das Plugin wird als Backend verfügbar sein. Um es zu verwenden, übergeben Sie die Option -platform webgl an Ihre Anwendung und öffnen Sie dann einen Webbrowser unter http://localhost:8080/ .
Das Plugin unterstützt die Konfiguration des Netzwerkports, der vom integrierten HTTP-Server verwendet wird. Wenn Sie den Standard-HTTP-Port verwenden möchten, können Sie beispielsweise die Option -platform webgl:port=80 verwenden.
Das Plugin wird in QTDIR /plugins/platforms/libqwebgl.so installiert (der Pfad ist unter Windows ähnlich).
Grenzen
Mit den Alpha- und Beta-1-Versionen von Qt 5.10.0 funktionierte das WebGL-Plugin erfolgreich auf einem Ubuntu Linux 17.04-System mit dem Chromium-Browser.
Es sollte mit anderen Browsern funktionieren, die WebGL unterstützen, einschließlich mobiler und eingebetteter Browser. Es wird empfohlen, dass Sie es auch in einer QtWebEngine-Ansicht anstelle eines normalen Browsers ausführen können. Es gibt noch keine Dokumentation (weil es nur Beta 1 ist), außer ein paar Blogbeiträgen.
Das Plugin unterstützt nur QML-Anwendungen. Es ist nicht bekannt, ob Widgets unterstützt werden. Laut den Entwicklern wird die Widget-Unterstützung bei guter Performance nur schwer zu erreichen sein, da sie auf Rasterung setzen.
Sie könnten denken, dass die Ausführung in einem Browser bedeutet, dass die Anwendung in einer Sandbox ausgeführt wird und nicht auf Ressourcen außerhalb des Browsers zugreifen kann, z. B. Dateien. Der Browser rendert jedoch nur, und die Anwendung selbst wird wie eine normale Anwendung ausgeführt (jedoch darf sie nicht auf demselben Computer wie das Display ausgeführt werden).
Ein Erlebnis
Ab Qt 5.10.0 Beta 1 haben die wenigen QML-Beispiele, die ausprobiert wurden, einigermaßen gut funktioniert. Einige von ihnen stießen auf einige Probleme und andere starteten überhaupt nicht. Hier sind Screenshots von mehreren Beispielen.
Qt Quick Controls Texteditor:
Qt-Schnellsteuerungsgalerie:
QML Photoviewer:
SameGame:
Fazit
In der Vergangenheit wurden bei der Entscheidung, eine Anwendung zu entwickeln, die nativ oder in einem Webbrowser ausgeführt werden kann, normalerweise sehr unterschiedliche Strategien verwendet (z. B. Verwendung von Qt/QML versus Verwendung von HTML5). Unter der Annahme, dass das WebGL-Plugin stabil und vollständig wird, bietet es einen attraktiven Ansatz für die Entwicklung von Webanwendungen mit Qt und für die Umwandlung einer QML-basierten nativen Qt-Anwendung mit minimalem Aufwand in eine Webanwendung. Beachten Sie jedoch die Auswirkungen auf die Lizenzierung, wenn Sie entscheiden, ob Sie die kommerzielle oder die Open-Source-Version von Qt verwenden möchten.
Ich freue mich darauf, dass das WebGL-Plug-in später in diesem Jahr in Qt 5.10.0 dokumentiert und vollständiger wird
Links
1.
http://blog.qt.io/blog/2017/10/09/qt-5-10-beta-released/
2.
http://blog.qt.io/blog/2017/09/13/qt-5-10-alpha-released/
3.
http://blog.qt.io/blog/2017/02/22/qt-quick-webgl-streaming/
4.
http://blog.qt.io/blog/2017/07/07/qt-webgl-streaming-merged
Artikel geschrieben von: Jeff Tranter Mittwoch, 25. Oktober 2017