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::Vertex | 0 | 頂点ステージ |
QRhiShaderStage::TessellationControl | 1 | テッセレーション制御(ハルシェーダー)ステージ。QRhi::Tessellation 機能がサポートされている場合にのみ使用されなければならない。 |
QRhiShaderStage::TessellationEvaluation | 2 | テッセレーション評価(ドメインシェーダ)ステージ。QRhi::Tessellation 機能がサポートされているときのみ使用されなければならない。 |
QRhiShaderStage::Fragment | 4 | フラグメント(ピクセルシェーダ)ステージ |
QRhiShaderStage::Compute | 5 | 計算ステージ。QRhi::Compute 機能がサポートされているときのみ使用されなければならない。 |
QRhiShaderStage::Geometry | 3 | ジオメトリステージ。QRhi::GeometryShader 機能がサポートされている場合にのみ使用する必要があります。 |
メンバ関数ドキュメント
[noexcept]
QRhiShaderStage::QRhiShaderStage()
空のQShader で頂点ステージのシェーダーステージ記述を構築します。
QRhiShaderStage::QRhiShaderStage(QRhiShaderStage::Type type, const QShader &shader, QShader::Variant v = QShader::StandardShader)
ステージのtype とshader を持つシェーダーステージ記述を構築します。
シェーダーのバリアント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 オブジェクトa とb の値が等しい場合はfalse
を返し、そうでない場合はtrue
を返します。
[noexcept]
bool operator==(const QRhiShaderStage &a, const QRhiShaderStage &b)
つのQRhiShaderStage オブジェクトa とb の値が等しい場合、true
を返します。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。