QRhiResource Class
ネイティブ・リソース・オブジェクトをカプセル化するクラスの基底クラスです。詳細...
Header: | #include <rhi/qrhi.h> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
qmake: | QT += gui-private |
Since: | Qt 6.6 |
Inherited By: |
パブリック型
enum | Type { Buffer, Texture, Sampler, RenderBuffer, RenderPassDescriptor, …, CommandBuffer } |
パブリック関数
virtual | ~QRhiResource() |
void | deleteLater() |
virtual void | destroy() = 0 |
quint64 | globalResourceId() const |
QByteArray | name() const |
virtual QRhiResource::Type | resourceType() const = 0 |
QRhi * | rhi() const |
void | setName(const QByteArray &name) |
詳細説明
注: これは互換性保証に制限のあるRHI APIです。詳細はQRhi を参照してください。
メンバ型 ドキュメント
enum QRhiResource::Type
リソースの型を指定します。
定数 | 値 |
---|---|
QRhiResource::Buffer | 0 |
QRhiResource::Texture | 1 |
QRhiResource::Sampler | 2 |
QRhiResource::RenderBuffer | 3 |
QRhiResource::RenderPassDescriptor | 4 |
QRhiResource::SwapChainRenderTarget | 5 |
QRhiResource::TextureRenderTarget | 6 |
QRhiResource::ShaderResourceBindings | 7 |
QRhiResource::GraphicsPipeline | 8 |
QRhiResource::SwapChain | 9 |
QRhiResource::ComputePipeline | 10 |
QRhiResource::CommandBuffer | 11 |
メンバ関数ドキュメント
[virtual noexcept]
QRhiResource::~QRhiResource()
デストラクタ。
基礎となるネイティブグラフィックリソースがある場合、それを解放する(または解放の延期を要求する)。
注意: 現在のフレームのコマンドによって参照されているリソースは、QRhi::endFrame() によってフレームがサブミットされるまで解放されるべきではありません。
destroy()も参照 。
void QRhiResource::deleteLater()
フレームが記録されていない状態でこの関数を呼び出すと、オブジェクトを削除するのと同じことになります。しかし、QRhi::beginFrame() とQRhi::endFrame() の間では、動作が異なります。QRhiResource は、QRhi::endFrame() によってフレームが送信されるまで破棄されないため、記録中のフレームによって参照されるQRhiResource オブジェクトを変更しないというQRhi の要件を満たします。
このオブジェクトを生成したQRhi がすでに破棄されている場合、オブジェクトは即座に削除されます。
deleteLater()を使用することは、多くの場合に便利であり、C++ オブジェクトのインスタンス(QRhiBuffer 、QRhiTexture など)自体も現在のフレームが終了するまで有効であることを確認する方法を提供することによって、低レベルの保証(そうすることが安全であり、それらがまだ飛行中のフレームで GPU によって使用されていないことが確実にわかるまで、基礎となるネイティブ・グラフィックス・オブジェクトが決して破棄されないこと)を補完します。
次の例は、1 つのフレームでのみ使用され、endFrame() で自動的に解放されるスローアウェイ・バッファを作成する便利な方法を示しています。(バッファが GPU によってアクセスされるフレームが完了することが保証されるまで、QRhi バックエンドはバッファの解放を延期します)。
rhi->beginFrame(swapchain); QRhiBuffer *buf = rhi->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::VertexBuffer, 256); buf->deleteLater(); // ! u = rhi->nextResourceUpdateBatch(); u->uploadStaticBuffer(buf, data); // ... draw with buf rhi->endFrame();
destroy()も参照してください 。
[pure virtual]
void QRhiResource::destroy()
基盤となるネイティブグラフィックリソースを解放します(または解放の延期を要求します)。複数回呼び出しても安全ですが、それ以降呼び出すことはできません。
destroy()が呼び出されると、create()
を再度呼び出すことで、QRhiResource インスタンスを再利用できる。この場合、その下に新しいネイティブ・グラフィックス・リソースが作成されます。
注意: 現在のフレームのコマンドによって参照されているリソースは、QRhi::endFrame ()によってフレームがサブミットされるまで解放されるべきではありません。
QRhiResource デストラクタも同じタスクを実行するので、QRhiResource を削除する前にこの関数を呼び出す必要はありません。
deleteLater()も参照 。
quint64 QRhiResource::globalResourceId() const
このQRhiResource のグローバルな一意識別子を返す。
ユーザーコードがこの値を直接扱う必要はほとんどありません。この値は、内部的に追跡と記帳の目的で使用されます。
QByteArray QRhiResource::name() const
現在設定されているオブジェクト名を返します。デフォルトでは、名前は空です。
setName()も参照してください 。
[pure virtual]
QRhiResource::Type QRhiResource::resourceType() const
リソースの型を返します。
QRhi *QRhiResource::rhi() const
このリソースを作成したQRhi を返します。
このオブジェクトを作成したQRhi がすでに破棄されている場合、結果はnullptr
になります。
void QRhiResource::setName(const QByteArray &name)
オブジェクトにname を設定します。
これにより、RenderDocやXCode などのグラフィックス・デバッグ・ツールで表示されるネイティブ・グラフィックス・リソースの説明的な名前を得ることができます。
適切なグラフィックス API 経由で名前を中継してネイティブオブジェクトに名前を付ける場合、QRhi::DebugMarkers がサポートされていない場合、その名前は無視されます。また、バックエンドによっては、QRhi::EnableDebugMarkers が設定されていない場合も無視されます。
注意 : バッファ、レンダーバッファ、テクスチャ以外のオブジェクトでは、バックエンドによっては名前が無視されることがあります。
注: 名前は変更される可能性があります。複数のネイティブバッファに裏打ちされたQRhiBuffer のようなスロット化されたリソースの場合、QRhi はサフィックスを付加して、基盤となるネイティブバッファを容易に区別できるようにします。
name()も参照してください 。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。