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 を参照。

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