QRhiTextureRenderTarget Class
テクスチャのレンダーターゲットリソース。詳細...
ヘッダー | #include <rhi/qrhi.h> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
qmake: | QT += gui-private |
以来: | Qt 6.6 |
継承: | QRhiRenderTarget |
パブリックな型
enum | Flag { PreserveColorContents, PreserveDepthStencilContents, DoNotStoreDepthStencilContents } |
flags | Flags |
パブリック関数
virtual bool | create() = 0 |
QRhiTextureRenderTargetDescription | description() const |
QRhiTextureRenderTarget::Flags | flags() const |
virtual QRhiRenderPassDescriptor * | newCompatibleRenderPassDescriptor() = 0 |
void | setDescription(const QRhiTextureRenderTargetDescription &desc) |
void | setFlags(QRhiTextureRenderTarget::Flags f) |
再実装されたパブリック関数
virtual QRhiResource::Type | resourceType() const override |
詳細説明
テクスチャレンダリングターゲットは、1つまたは複数のテクスチャにレンダリングすることができ、オプションで深度テクスチャまたは深度/ステンシルレンダーバッファを使用することもできます。
マルチサンプルレンダリングのための一般的なアプローチは、レンダーバッファをカラーアタッチメントとして使用し、非マルチサンプルのデスティネーションテクスチャをresolve texture
として設定することです。 詳細については、QRhiColorAttachment クラスの詳細な説明を参照してください。
注意: QRhiTextureRenderTargetと組み合わせて使用されるテクスチャは、QRhiTexture::RenderTarget フラグで作成する必要があります。
テクスチャを単色のアタッチメントとしてレンダーターゲットを作成する最も簡単な例です:
QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, size, 1, QRhiTexture::RenderTarget); texture->create(); QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget({ texture }); rp = rt->newCompatibleRenderPassDescriptor(); rt->setRenderPassDescriptor(rp); rt->create(); // rt can now be used with beginPass()
Note: これは限定的な互換性保証を持つRHI APIです。詳細はQRhi を参照してください。
メンバ型ドキュメント
enum QRhiTextureRenderTarget::Flag
flags QRhiTextureRenderTarget::Flags
レンダーターゲットのロード/ストア動作を記述するフラグ値。ロード/ストアの動作は、バックエンドによっては、フードの下でネイティブリソースにベイクされる場合があります。したがって、前もって知っておく必要があり、再構築(したがって、新しいネイティブリソースを解放して作成)しない限り変更できません。
定数 | 値 | 説明 |
---|---|---|
QRhiTextureRenderTarget::PreserveColorContents | 1 << 0 | レンダーパスを開始するときに、クリアする代わりに、カラーアタッチメントの内容をロードすることを示します。これは、特にモバイル(タイル型)GPUでは、より高価になる可能性がありますが、パス間で既存の内容を保持することができます。resolveテクスチャセットでマルチサンプルレンダリングを行う場合、このフラグを設定すると、マルチサンプルカラーデータをマルチサンプルテクスチャまたはレンダーバッファに保存(書き出し)することも要求されます。(非マルチサンプルレンダリングでは、カラーデータは常に保存されますが、MSAAでは、マルチサンプルデータを保存すると、特定のGPUアーキテクチャの効率が低下するため、デフォルトでは書き出されません。) ただし、これは移植性がないことに注意してください。グラフィックスAPIレベルでは、中間マルチサンプルテクスチャが存在しない場合があります。たとえば、OpenGL ESのGL_EXT_multisampled_render_to_texture 。すべて暗黙的で、OpenGL ESの実装によって処理されるためです。この場合、PreserveColorContentsはおそらく何の効果もありません。したがって、マルチサンプルレンダリングを使用し、カラーアタッチメントがマルチサンプルQRhiTexture (QRhiRenderBuffer ではなく)を使用している場合、このフラグに依存することは避けてください。 |
QRhiTextureRenderTarget::PreserveDepthStencilContents | 1 << 1 | レンダリングパスを開始するときに、クリアではなく、深度テクスチャの内容がロードされることを示します。テクスチャが深度バッファとして使用される場合にのみ適用されます (QRhiTextureRenderTargetDescription::depthTexture() が設定される)。これは、深度/ステンシルレンダバッファが物理的なバッキングを持たない可能性があり、データがそもそも書き出されない可能性があるためです。 |
QRhiTextureRenderTarget::DoNotStoreDepthStencilContents | 1 << 2 | 深度テクスチャの内容が書き出される必要がないことを示す。QRhiRenderBuffer QRhiRenderBuffer ではなくQRhiTexture がデプステ ンシルバッファとして使用される場合にのみ関連します。depthResolveTextureが設定されている場合、フラグが設定されているかのように動作するため、フラグは関係ありません。この列挙値は Qt 6.8 で導入されました。 |
Flags 型はQFlags<Flag> の typedef です。Flag値のORの組み合わせを格納します。
メンバ関数のドキュメント
[pure virtual]
bool QRhiTextureRenderTarget::create()
対応するネイティブ・グラフィックス・リソースを作成する。以前の create() で対応するdestroy() がなかったために既にリソースが存在する場合、destroy() が暗黙的に最初に呼び出される。
注意: renderPassDescriptor() は、create() を呼び出す前に設定する必要があります。レンダー・ターゲットと互換性のあるQRhiRenderPassDescriptor を取得するには、 create()の前にnewCompatibleRenderPassDescriptor()を呼び出すが、description()やflags()など、 他のすべてのパラメータを設定した後に呼び出す。リソースを節約するために、可能な限り、複数のQRhiTextureRenderTarget インスタンスで同じQRhiRenderPassDescriptor を再利用する。同じレンダーパスディスクリプターを共有できるのは、レンダーターゲットのアタッチメントの数と種類が同じ(実際のテクスチャは異なってもよい)、フラグが同じ場合のみです。
注意: description() で参照されるQRhiTexture インスタンスなどのリソースは、すでに create() が呼び出されている必要があります。
グラフィック操作に成功した場合はtrue
を、失敗した場合はfalse
を返します。返り値に関係なく、destroy() を呼び出すことは常に安全である。
QRhiTextureRenderTargetDescription QRhiTextureRenderTarget::description() const
レンダーターゲットの説明を返します。
setDescription()も参照 ください。
QRhiTextureRenderTarget::Flags QRhiTextureRenderTarget::flags() const
現在設定されているフラグを返す。
setFlags()も参照 。
[pure virtual]
QRhiRenderPassDescriptor *QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor()
このレンダーターゲットと互換性のある新しいQRhiRenderPassDescriptor を返す。
返された値は、setRenderPassDescriptor() とQRhiGraphicsPipeline::setRenderPassDescriptor() に渡すことができます。レンダーパス記述子は、flags() によって影響を受けることができるアタッチメント(色、深度/ステンシル)とロード/ストアの動作を記述します。QRhiGraphicsPipeline は、compatible QRhiRenderPassDescriptor が設定されているレンダーターゲットとの組み合わせでのみ使用できます。
2つのQRhiTextureRenderTarget インスタンスは、アタッチメントの数とタイプが同じであれば、同じレンダーパス記述子を共有することができる。関連するQRhiTexture またはQRhiRenderBuffer インスタンスはレンダー パス記述子の一部ではないため、2 つのQRhiTextureRenderTarget インスタンスで異なることがあります。
注意: description() で参照されるQRhiTexture インスタンスなどのリソースは、すでにcreate() が呼び出されている必要がある。
create()も参照のこと 。
[override virtual]
QRhiResource::Type QRhiTextureRenderTarget::resourceType() const
再実装:QRhiResource::resourceType() const.
リソース型を返します。
void QRhiTextureRenderTarget::setDescription(const QRhiTextureRenderTargetDescription &desc)
レンダーターゲットの説明を設定するdesc 。
description()も参照 。
void QRhiTextureRenderTarget::setFlags(QRhiTextureRenderTarget::Flags f)
フラグをf に設定する。
flags()も参照のこと 。
© 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.