QRhiTextureRenderTarget 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 |
Inherits: | 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(rt); 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 ではなく、QRhiTexture がデプステ ンシルバッファとして使用される場合にのみ関連します。QRhiRenderBuffer の場合、これは暗黙的であるためです。depthResolveTextureが設定されている場合、フラグが設定されているかのように動作するため、フラグは関係ありません。この列挙値は Qt 6.8 で導入されました。 |
Flags 型はQFlags<Flag> の typedef です。Flag値のORの組み合わせを格納します。
メンバー関数ドキュメント
[pure virtual]
bool QRhiTextureRenderTarget::create()
対応するネイティブグラフィックリソースを作成します。対応するdestroy() がない以前の create() によってすでにリソースが存在する場合、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() も参照して ください。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。