Die erste Beta von Qt 5.10 ist am 9. Oktober 2017 erschienen. Die neue Version ergänzt das plattformübergreifende Framework um eine erste Vulkan-Anbindung, mit der Anwendungen Vulkan-Fenster unter Windows, Linux und Android einrichten können. Die technische Beschreibung im Qt-Blog nennt dafür die Klassen QVulkanInstance und QVulkanWindow.
Die offizielle Feature-Dokumentation zu Qt 5.10 führt Vulkan-Unterstützung für Windows-Desktop, Linux mit Xcb und Android ab API-Level 23 auf. QWindow kann als VulkanSurface verwendet werden, während QVulkanWindow eine bequemere Basisklasse für Anwendungen bereitstellt. Die API-Unterstützung bleibt dabei bewusst nah am Vulkan-Kern und versteckt dessen Funktionsweise nicht vollständig.
Vulkan-Fenster für mehrere Plattformen
Qt übernimmt vor allem die Anbindung an Fenstersysteme und die Auflösung der Vulkan-Funktionen zur Laufzeit. Unter Windows setzt die Einrichtung das LunarG-SDK beziehungsweise die Umgebungsvariable VULKAN_SDK voraus. Unter Linux werden die Vulkan-Header beim Konfigurieren erkannt, Android wird mit den passenden NDK-Versionen unterstützt. Dadurch entfällt ein Teil des plattformspezifischen Codes, der bei einer direkten Vulkan-Integration sonst mehrfach gepflegt werden müsste.
Zum Umfang der Beta gehören nicht die Qt-Quick- oder Qt-3D-Renderpfade. Vulkan-Fenster lassen sich jedoch mit Widgets kombinieren, was insbesondere für grafische Werkzeuge und technische Anwendungen interessant ist. Der Ansatz ergänzt damit die bereits dokumentierten Qt-3D-Werkzeuge um eine weitere Grafik-API für eigene Fenster und Rendering-Prototypen.
Beispiele für QVulkanWindow
Die Qt-Entwickler kündigten mehrere Beispiele für die neue Schnittstelle an, darunter ein einfaches Vulkan-Fenster, ein Dreieck, eine Widget-Variante, eine Textur-Demo und eine Würfel-Szene. Für Spieleentwickler und technische Teams ist Qt 5.10 damit vor allem als plattformübergreifende Grundlage für Werkzeuge, Visualisierungen und eigenständige Rendering-Experimente interessant. Die Beta bleibt eine Vorabversion, deren neue Funktionen sich bis zur finalen Veröffentlichung noch ändern konnten.

