GraphicsStateInfo Struct

struct QQuickWindow::GraphicsStateInfo

Beschreibt einen Teil des Grafikstatus von RHI zum Zeitpunkt eines beginExternalCommands()-Aufrufs. Mehr...

Öffentliche Variablen

Detaillierte Beschreibung

Dokumentation der Mitgliedsvariablen

int GraphicsStateInfo::currentFrameSlot

Diese Variable enthält den aktuellen Frame-Slot-Index während der Aufnahme eines Frames.

Wenn der Szenegraph mit 3D-APIs auf niedrigerer Ebene wie Vulkan oder Metal gerendert wird, ist es die Aufgabe von Qt, das Blockieren sicherzustellen, wenn ein neuer Frame gestartet wird und die CPU bereits eine bestimmte Anzahl von Frames vor der GPU liegt (weil der in Frame Nr. current - FramesInFlight übermittelte Befehlspuffer noch nicht abgeschlossen ist). Bei anderen Grafik-APIs, wie z. B. OpenGL oder Direct 3D 11, wird diese Kontrollebene nicht dem API-Client offengelegt, sondern von der Implementierung des Grafik-API gehandhabt.

Im weiteren Sinne bedeutet dies auch, dass die angemessene doppelte (oder dreifache) Pufferung von Ressourcen, wie z. B. Puffern, vom Grafik-API-Client verwaltet werden muss. In der Regel kann ein einheitlicher Puffer, in dem sich die Daten zwischen den Frames ändern, nicht einfach seinen Inhalt ändern, wenn ein Frame übermittelt wird, da der Frame noch aktiv ("in flight") sein kann, wenn mit der Aufzeichnung des nächsten Frames begonnen wird. Um ein Abwürgen der Pipeline zu vermeiden, besteht eine Möglichkeit darin, mehrere Puffer (und Speicherzuweisungen) unter der Haube zu haben und so zumindest ein doppelt gepuffertes Schema für solche Ressourcen zu realisieren.

Anwendungen, die Rendering direkt mit einer Grafik-API wie Vulkan integrieren, möchten möglicherweise eine ähnliche doppelte oder dreifache Pufferung ihrer eigenen Grafikressourcen durchführen, und zwar auf eine Weise, die mit dem Frame-Submission-Prozess der Qt-Rendering-Engine kompatibel ist. Dazu muss man die Werte für die maximale Anzahl von Frames im Flug (typischerweise 2 oder 3) und den aktuellen Frame-Slot-Index kennen, der eine Zahl ist, die zwischen 0, 1, ..., FramesInFlight-1 läuft, und dann umhergehen kann. Ersteres wird in der Variable framesInFlight angezeigt. Der letztere, der aktuelle Index, ist dieser Wert.

Ein Beispiel für die Verwendung dieser Werte in der Praxis finden Sie in den Beispielen {Szenengraph - Vulkan unter QML} und {Szenengraph - Vulkan-Texturimport}.

int GraphicsStateInfo::framesInFlight

Diese Variable enthält die maximale Anzahl von Bildern, die im Flug gehalten werden.

Siehe currentFrameSlot für eine detaillierte Beschreibung.

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