GraphicsStateInfo Struct

struct QQuickWindow::GraphicsStateInfo

beginExternalCommands() 呼び出し時点での RHI のグラフィック状態の一部を記述します。詳細...

パブリック変数

詳細説明

メンバー変数説明

int GraphicsStateInfo::currentFrameSlot

この変数は、フレームを記録している間の現在のフレームスロットインデックスを保持します。

シーングラフがVulkanやMetalのような低レベルの3D APIでレンダリングされる場合、新しいフレームを開始し、CPUがGPUよりすでにあるフレーム数進んでいる(フレーム番号current -FramesInFlight で投入されたコマンドバッファがまだ完了していないため)ことがわかるたびに、ブロッキングを保証するのはQtの責任です。OpenGL や Direct 3D 11 などの他のグラフィックス API では、このレベルの制御は API ク ライアントに公開されず、グラフィックス API の実装によって処理されます。

このことは、バッファのようなリソースの適切な二重(または三重)バッファリングが、グラフィックスAPIクライアントの管理次第であることも意味します。最も一般的には、フレーム間でデータが変更される均一なバッファは、次のフレームの記録を開始するときにフレームがまだアクティブ("飛行中")であるかもしれないことを考えると、フレームを送信するときにその内容を単純に変更することはできません。パイプラインをストールさせないために、1つの方法は、ボンネットの下に複数のバッファ(およびメモリ割り当て)を持つことで、このようなリソースに対して少なくともダブルバッファ方式を実現することです。

Vulkan などのグラフィックス API を直接使用したレンダリングを統合するアプリケーションでは、Qt レンダリングエンジンのフレーム送信処理と互換性のある方法で、独自のグラフィックスリソースに対して同様の二重または三重のバッファリングを行いたいと思うかもしれません。その場合、インフライトフレームの最大数(通常は2または3)と現在のフレームスロットインデックスの値を知る必要があります。前者はframesInFlight 。後者の現在のインデックスはこの値です。

これらの値を実際に使用する例については、{Scene Graph - Vulkan Under QML}と{Scene Graph - Vulkan Texture Import}の例を参照してください。

int GraphicsStateInfo::framesInFlight

この変数は、飛行中に保持されるフレームの最大数を保持します。

詳しい説明はcurrentFrameSlot を参照してください。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。