QRhiShaderStage 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

パブリックタイプ

enum Type { Vertex, TessellationControl, TessellationEvaluation, Fragment, Compute, Geometry }

パブリック関数

QRhiShaderStage()
QRhiShaderStage(QRhiShaderStage::Type type, const QShader &shader, QShader::Variant v = QShader::StandardShader)
void setShader(const QShader &s)
void setShaderVariant(QShader::Variant v)
void setType(QRhiShaderStage::Type t)
QShader shader() const
QShader::Variant shaderVariant() const
QRhiShaderStage::Type type() const
size_t qHash(const QRhiShaderStage &v, size_t seed = 0)
bool operator!=(const QRhiShaderStage &a, const QRhiShaderStage &b)
bool operator==(const QRhiShaderStage &a, const QRhiShaderStage &b)

詳細説明

QRhiGraphicsPipeline をセットアップするとき、シェーダーステージのコレクションが指定されます。QRhiShaderStage には、QShader と、グラフィックス・パイプライン・ステージなどの関連するメタデータ、および選択するshader variant が含まれます。実行時に使用されるQRhi バックエンドが、QShader 内のコレクションから適切なシェーダー・バージョンを選択するため、シェーダー言語やバージョンを指定する必要はありません。

典型的な使用法はQRhiGraphicsPipeline::setShaderStages() との組み合わせです。ここでは、オフラインまたはビルド時に生成された.qsb ファイルからQShader をロードする簡単な方法を示します:

QShader getShader(const QString &name)
{
    QFile f(name);
    return f.open(QIODevice::ReadOnly) ? QShader::fromSerialized(f.readAll()) : QShader();
}

QShader vs = getShader("material.vert.qsb");
QShader fs = getShader("material.frag.qsb");
pipeline->setShaderStages({
    { QRhiShaderStage::Vertex, vs },
    { QRhiShaderStage::Fragment, fs }
});

注: これは互換性保証に制限のある RHI API です。詳細はQRhi を参照してください。

メンバタイプ ドキュメント

enum QRhiShaderStage::Type

シェーダーステージのタイプを指定します。

定数説明
QRhiShaderStage::Vertex0頂点ステージ
QRhiShaderStage::TessellationControl1テッセレーション制御(ハルシェーダー)ステージ。QRhi::Tessellation 機能がサポートされている場合にのみ使用されなければならない。
QRhiShaderStage::TessellationEvaluation2テッセレーション評価(ドメインシェーダ)ステージ。QRhi::Tessellation 機能がサポートされているときのみ使用されなければならない。
QRhiShaderStage::Fragment4フラグメント(ピクセルシェーダ)ステージ
QRhiShaderStage::Compute5計算ステージ。QRhi::Compute 機能がサポートされているときのみ使用されなければならない。
QRhiShaderStage::Geometry3ジオメトリステージ。QRhi::GeometryShader 機能がサポートされている場合にのみ使用する必要があります。

メンバ関数ドキュメント

[noexcept] QRhiShaderStage::QRhiShaderStage()

空のQShader で頂点ステージのシェーダーステージ記述を構築します。

QRhiShaderStage::QRhiShaderStage(QRhiShaderStage::Type type, const QShader &shader, QShader::Variant v = QShader::StandardShader)

ステージのtypeshader を持つシェーダーステージ記述を構築します。

シェーダーのバリアントv のデフォルトはQShader::StandardShader です。QShader にはシェーダの複数のソースとバイナリバージョンが含まれます。v を使用して、希望するバリアントを選択できます。

void QRhiShaderStage::setShader(const QShader &s)

シェーダーコレクションs を設定します。

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

void QRhiShaderStage::setShaderVariant(QShader::Variant v)

要求されたシェーダーバリアントを設定するv

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

void QRhiShaderStage::setType(QRhiShaderStage::Type t)

ステージのタイプをt に設定します。 セッタは実際にはほとんど必要ないはずです。たいていのアプリケーションではQRhiShaderStage コンストラクタを使うでしょう。

type() も参照

QShader QRhiShaderStage::shader() const

グラフィックス・パイプラインでこのステージに使用するQShader を返します。

setShader() も参照

QShader::Variant QRhiShaderStage::shaderVariant() const

要求されたシェーダバリアントを返します。

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

QRhiShaderStage::Type QRhiShaderStage::type() const

ステージのタイプを返します。

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

関連する非メンバー

[noexcept] size_t qHash(const QRhiShaderStage &v, size_t seed = 0)

seed を計算のシードに使用して、v のハッシュ値を返します。

[noexcept] bool operator!=(const QRhiShaderStage &a, const QRhiShaderStage &b)

2 つのQRhiShaderStage オブジェクトab の値が等しい場合はfalse を返し、そうでない場合はtrue を返します。

[noexcept] bool operator==(const QRhiShaderStage &a, const QRhiShaderStage &b)

つのQRhiShaderStage オブジェクトab の値が等しい場合、true を返します。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。