QRhiColorAttachment 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

パブリック関数

QRhiColorAttachment()
QRhiColorAttachment(QRhiRenderBuffer *renderBuffer)
QRhiColorAttachment(QRhiTexture *texture)
int layer() const
int level() const
(since 6.7) int multiViewCount() const
QRhiRenderBuffer *renderBuffer() const
int resolveLayer() const
int resolveLevel() const
QRhiTexture *resolveTexture() const
void setLayer(int layer)
void setLevel(int level)
(since 6.7) void setMultiViewCount(int count)
void setRenderBuffer(QRhiRenderBuffer *rb)
void setResolveLayer(int layer)
void setResolveLevel(int level)
void setResolveTexture(QRhiTexture *tex)
void setTexture(QRhiTexture *tex)
QRhiTexture *texture() const

詳細説明

カラーアタッチメントは、QRhiTexture またはQRhiRenderBuffer のいずれかです。前者、つまりtexture() が設定されている場合、ほとんどのケースで使用されます。QRhiColorAttachment は、一般的にQRhiTextureRenderTargetDescription と組み合わせて使用されます。

注: texture ()とrenderBuffer ()の両方を設定する(同時に非NULLにする)ことはできません。

マルチサンプリングが必要な場合のみ、renderBuffer を設定することをお勧めします。前者はより多くのランタイム構成で利用可能であるため、QRhi::MultisampleTexture よりも、QRhi::MultisampleRenderBuffer に依存する方が実際には良い選択です(例えば、マルチサンプルテクスチャをサポートしていないが、マルチサンプルレンダーバッファをサポートしている OpenGL ES 3.0 上で実行する場合)。

非マルチサンプルテクスチャをターゲットにする場合、layer() とlevel() は、ターゲットにするレイヤ(キューブマップの場合は面インデックス0-5 )とミップレベルを示します。3Dテクスチャの場合layer() は、レンダリング先のスライス(3Dテクスチャ内の1つの2D画像)を指定します。テクスチャ配列の場合layer() は配列インデックスです。

texture() またはrenderBuffer() がマルチサンプルの場合、resolveTexture() をオプションで設定できます。設定すると、レンダリングパスの最後に、サンプルは自動的にその(マルチサンプルでない)テクスチャに解決されます。マルチサンプ ルレンダバッファにレンダリングする場合、解決された非マルチサンプ ルコンテンツを取り出す唯一の方法はこれです。マルチサンプルテクスチャでは、シェーダでのサンプリングが可能であるため、これは1つのオプションに過ぎません。

注意: 解決(resolving)が有効になっている場合、マルチサンプ ルデータはまったく書き出されないことがあります。これは、resolveTexture ()が設定されている場合、マルチサンプルtexture ()は、サンプリング用のシェーダでその後使用してはならないことを意味します。

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

QRhiTextureRenderTargetDescriptionも参照

メンバ関数ドキュメント

[constexpr noexcept] QRhiColorAttachment::QRhiColorAttachment()

空のカラーアタッチメントの説明を構築します。

QRhiColorAttachment::QRhiColorAttachment(QRhiRenderBuffer *renderBuffer)

関連するカラーバッファとしてrenderBuffer を指定するカラーアタッチメント記述を構築する。

QRhiColorAttachment::QRhiColorAttachment(QRhiTexture *texture)

関連するカラーバッファとしてtexture を指定するカラーアタッチメント記述を構築する。

int QRhiColorAttachment::layer() const

レイヤインデックス(キューブマップ面または配列レイヤ)を返します。デフォルトは 0。

setLayer()も参照してください

int QRhiColorAttachment::level() const

mip レベルを返す。デフォルトは 0。

setLevel()も参照

[since 6.7] int QRhiColorAttachment::multiViewCount() const

現在設定されているビュー数を返します。デフォルトは 0 で、この色のアタッチメントを持つレンダーターゲットはマルチビューレンダリングで使用されないことを示します。

この関数は Qt 6.7 で導入されました。

setMultiViewCount()も参照してください

QRhiRenderBuffer *QRhiColorAttachment::renderBuffer() const

このアタッチメント記述が参照するレンダーバッファ、または存在しない場合はnullptr を返します。

実際には、QRhiRenderBufferQRhiColorAttachment と関連付けることは、レンダリングパスの最後に非マルチサンプルテクスチャに解決されるマルチサンプルcolor レンダーバッファを介してマルチサンプルレンダリングを設定するときに最も理にかなっています。

setRenderBuffer()も参照してください

int QRhiColorAttachment::resolveLayer() const

現在設定されているresolve textureレイヤーを返します。デフォルトは 0 です。

setResolveLayer()も参照してください

int QRhiColorAttachment::resolveLevel() const

現在設定されているresolve texture mip levelを返します。デフォルトは 0 です。

setResolveLevel()も参照してください

QRhiTexture *QRhiColorAttachment::resolveTexture() const

このアタッチメントの説明が参照する解決テクスチャ、またはない場合はnullptr を返します。

NULLでないresolveTextureを設定するのは、アタッチメントがマルチサンプルテクスチャまたはレンダーバッファを参照している場合に適用されます。resolveTexture() のQRhiTexture は、同じサイズ(ただしサンプルカウントは 1)の非マルチサンプル 2D テクスチャ(またはテクスチャ配列)になります。マルチサンプルコンテンツは、各レンダーパスの終了時に自動的にこのテクスチャに解決されます。

setResolveTexture()も参照してください

void QRhiColorAttachment::setLayer(int layer)

layer インデックスを設定する。

layer()も参照のこと

void QRhiColorAttachment::setLevel(int level)

miplevel を設定する。

level()も参照のこと

[since 6.7] void QRhiColorAttachment::setMultiViewCount(int count)

ビューcount を設定します。1より大きい値を設定すると、このカラーアタッチメントのレンダーターゲットがマルチビューレンダリングで使用されることを示します。デフォルト値は0であり、2より小さい値はマルチビューレンダリングを行わないことを示す。

count2 以上に設定されている場合、カラーアタッチメントは 2D テクスチャ配列に関連付けられている必要があります。layer() とmultiViewCount() を一緒に使用すると、マルチビューレンダリング時に対象となるテクスチャ配列要素の範囲が定義されます。

たとえば、layer0 で、multiViewCount2 の場合、テクスチャ配列は 2 つ(またはそれ以上)の要素を持つ必要があり、マルチビューレンダリングは要素 0 と 1 をターゲットにします。シェーダ内の変数gl_ViewIndex0 または1 の値を持ち、ビュー0 はテクスチャ配列要素0 に対応し、ビュー1 は配列要素1 に対応します。

注: count を 1 より大きく設定し、テクスチャ配列をtexture() として使用し、このカラーアタッチメントを持つQRhiTextureRenderTargetbeginPass() を呼び出すと、レンダーパス全体に対してマルチビューレンダリングが行われることになります。multiViewCountマルチビューレンダリングが必要でない限り、()を設定すべきではありません。マルチビューは、2Dテクスチャ配列以外のテクスチャタイプでは使用できません。(グラフィックスAPIとバックエンドによっては、3Dテクスチャが動作することがあります。アプリケーションはそれに依存せず、マルチビューレンダリングのレンダーターゲットとして2Dテクスチャ配列のみを使用することをお勧めします)

マルチビューレンダリングの詳細についてはGL_OVR_multiviewを参照してください。Qt が OpenGL (ES) で動作する場合は、GL_OVR_multiview2も必要です。

マルチビューレンダリングは、isFeatureSupported() からMultiView 機能がサポートされていると報告されている場合にのみ利用できます。

注意: 移植性を高めるため、一部のグラフィックスAPIではマルチビューレンダリングに制限があることに注意してください。マルチビューレンダーパスは、GL_OVR_multiviewがサポートされていないと宣言している機能には依存しないことが推奨されます。1つの例外は、gl_ViewIndex に依存するgl_Position 以外のシェーダステージ出力です。QRhi は、GL_OVR_multiview2 も存在しない限り、マルチビューがサポートされていると報告することはないため、(OpenGL でも)頼ることができます。

注意: マルチビューレンダリングは、テッセレーションやジオメトリシェーダとの組み合わせではサポートされていません。

この関数は Qt 6.7 で導入されました。

multiViewCount()も参照してください

void QRhiColorAttachment::setRenderBuffer(QRhiRenderBuffer *rb)

レンダーバッファrb を設定する。

注意: texture() とrenderBuffer() の両方を設定することはできない(同時に NULL でない)。

renderBuffer()も参照

void QRhiColorAttachment::setResolveLayer(int layer)

使用する resolve texturelayer を設定します。

resolveLayer()も参照してください

void QRhiColorAttachment::setResolveLevel(int level)

使用する resolve texture miplevel を設定します。

resolveLevel()も参照して ください。

void QRhiColorAttachment::setResolveTexture(QRhiTexture *tex)

resolve texturetex を設定します。

tex は2Dテクスチャまたは2Dテクスチャ配列であることが期待されます。いずれの場合も、 の単一レイヤー(配列要素)の単一ミップレベルを対象とします。ミップレベルと配列レイヤーは、 ()と ()で指定します。tex resolveLevel resolveLayer

multiviewカラーアタッチメントがテクスチャ配列に関連付けられていて、マルチビューが有効になっている場合、resolveテクスチャもすべてのビューに十分な要素を持つテクスチャ配列でなければなりません。この場合、ビューに対応するすべての要素が自動的に解決されます。動作は次の擬似コードに似ています:

for (i = 0; i < multiViewCount(); ++i)
    resolve texture's layer() + i into resolveTexture's resolveLayer() + i

なぜなら、マルチサンプ ルテクスチャ(sampler2DMStexelFetch など)専用に動作するフラグメントシェーダを記述する必要性を回避し、むしろアタッチメントのテクスチャがそもそもマルチサンプリングされ ていない場合と同じシェーダを使用できるからです。これは追加リソース(非マルチサンプルtex )を犠牲にします。

resolveTexture()も参照してください

void QRhiColorAttachment::setTexture(QRhiTexture *tex)

テクスチャtex を設定します。

注意: texture() とrenderBuffer() の両方を設定することはできません(同時に NULL でないこと)。

texture()も参照してください

QRhiTexture *QRhiColorAttachment::texture() const

この添付ファイルの説明が参照しているテクスチャを返します。ない場合はnullptr を返します。

setTexture()も参照してください

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