このページでは

QRhiTextureRenderTarget Class

テクスチャ・レンダリングターゲット・リソース。詳細...

ヘッダー: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
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()

注:これは 互換性の保証が限定的な RHI API です。詳細については、QRhi を参照してください。

メンバ型のドキュメント

enum QRhiTextureRenderTarget::Flag
flags QRhiTextureRenderTarget::Flags

レンダリングターゲットのロード/ストアの挙動を記述するフラグ値。ロード/ストアの挙動は、バックエンドによっては内部的にネイティブリソースに焼き込まれる場合があるため、事前に把握しておく必要があり、再ビルド(およびそれに伴うリリースと新しいネイティブリソースの作成)を行わない限り変更することはできません。

定数値説明
QRhiTextureRenderTarget::PreserveColorContents1 << 0レンダリングパスの開始時に、カラーアタッチメントの内容をクリアせずに読み込むことを示します。これは、特にモバイル(タイル型)GPUでは処理負荷が高くなる可能性がありますが、パス間で既存の内容を保持することができます。 リゾルブテクスチャセットを使用したマルチサンプルレンダリングを行う場合、このフラグを設定すると、マルチサンプルカラーデータをマルチサンプルテクスチャまたはレンダリングバッファに保存(書き出し)するよう要求されます。 (マルチサンプルレンダリング以外の場合、カラーデータは常に保存されますが、MSAA の場合、マルチサンプルデータを保存すると特定の GPU アーキテクチャにおいて効率が低下するため、デフォルトでは書き出しは行われません) ただし、これは移植性がない点に注意してください。グラフィックスAPIレベルで中間的なマルチサンプルテクスチャが存在しない場合があります。例えば、OpenGL ESのGL_EXT_multisampled_render_to_texture を使用する場合、すべてが暗黙的であり、OpenGL ESの実装によって処理されるためです。その場合、PreserveColorContentsは効果がない可能性が高いです。 したがって、マルチサンプルレンダリングを使用し、カラーアタッチメントがマルチサンプルQRhiTexture (QRhiRenderBuffer ではない)を使用している場合は、このフラグに依存しないようにしてください。
QRhiTextureRenderTarget::PreserveDepthStencilContents1 << 1レンダリングパスの開始時に、深度テクスチャの内容をクリアするのではなく読み込むことを示します。深度バッファとしてテクスチャが使用されている場合(QRhiTextureRenderTargetDescription::depthTexture() が設定されている場合)にのみ適用されます。これは、深度/ステンシル・レンダリングバッファには物理的なバッキングが存在しない場合があり、そもそもデータが書き出されない可能性があるためです。
QRhiTextureRenderTarget::DoNotStoreDepthStencilContents1 << 2深度テクスチャの内容を書き出す必要がないことを示します。 これは、深度・ステンシルバッファとして `QRhiTexture` が使用されている場合(`QRhiRenderBuffer` ではない場合)にのみ関連します。`QRhiRenderBuffer ` の場合、これは暗黙的に行われるためです。`depthResolveTexture` が設定されている場合、このフラグは関係ありません。その場合は、フラグが設定されているかのように動作するためです。この列挙型値は Qt 6.8 で導入されました。

Flags 型はQFlags<Flag> の typedef です。Flag 値の論理和(OR)を格納します。

メンバ関数のドキュメント

[pure virtual] bool QRhiTextureRenderTarget::create()

対応するネイティブグラフィックスリソースを作成します。以前にdestroy() を指定せずに create() が呼び出され、すでにリソースが存在する場合、まず暗黙的にdestroy() が呼び出されます。

注: renderPassDescriptor() は 、create() を呼び出す前に設定しておく必要があります。レンダリングターゲットと互換性のあるQRhiRenderPassDescriptor を取得するには、create() の前に、ただしdescription() やflags() などの他のすべてのパラメータを設定した後で、newCompatibleRenderPassDescriptor() を呼び出してください。リソースを節約するために、可能な限り、複数の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 を返します。

返り値は 2 つの方法で使用されます。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()も参照してください 。

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