QRhiShaderStage Class

Gibt den Typ und den Shadercode für eine Shaderstufe in der Pipeline an. Mehr...

Kopfzeile: #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

Öffentliche Typen

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

Öffentliche Funktionen

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 &key, size_t seed = 0)
bool operator!=(const QRhiShaderStage &a, const QRhiShaderStage &b)
bool operator==(const QRhiShaderStage &a, const QRhiShaderStage &b)

Detaillierte Beschreibung

Beim Einrichten einer QRhiGraphicsPipeline wird eine Sammlung von Shader-Stufen angegeben. Die QRhiShaderStage enthält eine QShader und einige zugehörige Metadaten, wie z. B. die Grafikpipelinestufe und die shader variant zur Auswahl. Es besteht keine Notwendigkeit, die Shader-Sprache oder -Version anzugeben, da das zur Laufzeit verwendete QRhi Backend die Auswahl der geeigneten Shader-Version aus der Sammlung innerhalb der QShader übernimmt.

Die typische Verwendung erfolgt in Kombination mit QRhiGraphicsPipeline::setShaderStages(), hier mit einem einfachen Ansatz zum Laden von QShader aus .qsb Dateien, die offline oder zur Erstellungszeit erzeugt wurden:

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 }
});

Hinweis: Dies ist eine RHI-API mit begrenzten Kompatibilitätsgarantien, siehe QRhi für Details.

Dokumentation der Mitgliedstypen

enum QRhiShaderStage::Type

Gibt den Typ der Shaderstufe an.

KonstanteWertBeschreibung
QRhiShaderStage::Vertex0Vertex-Stufe
QRhiShaderStage::TessellationControl1Stufe der Tessellierungssteuerung (Hüllenshader). Muss nur verwendet werden, wenn die Funktion QRhi::Tessellation unterstützt wird.
QRhiShaderStage::TessellationEvaluation2Tessellierungsauswertung (Domänen-Shader)-Stufe. Darf nur verwendet werden, wenn das Merkmal QRhi::Tessellation unterstützt wird.
QRhiShaderStage::Fragment4Fragment (Pixel-Shader)-Stufe
QRhiShaderStage::Compute5Berechnungsstufe. Darf nur verwendet werden, wenn die Funktion QRhi::Compute unterstützt wird.
QRhiShaderStage::Geometry3Geometriestufe. Darf nur verwendet werden, wenn die Funktion QRhi::GeometryShader unterstützt wird.

Dokumentation der Mitgliedsfunktionen

[noexcept] QRhiShaderStage::QRhiShaderStage()

Konstruiert eine Shaderstufenbeschreibung für die Scheitelpunktstufe mit einer leeren QShader.

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

Konstruiert eine Shader-Stufenbeschreibung mit der type der Stufe und der shader.

Die Shader-Variante v ist standardmäßig auf QShader::StandardShader eingestellt. Ein QShader enthält mehrere Quell- und Binärversionen eines Shaders. Darüber hinaus kann sie auch Varianten des Shaders mit leicht verändertem Code enthalten. v kann dann zur Auswahl der gewünschten Variante verwendet werden.

void QRhiShaderStage::setShader(const QShader &s)

Legt die Shader-Sammlung s fest.

Siehe auch shader().

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

Setzt die gewünschte Shader-Variante v.

Siehe auch shaderVariant().

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

Setzt den Typ der Bühne auf t. Setter sollten in der Praxis selten benötigt werden. Die meisten Anwendungen werden wahrscheinlich in den meisten Fällen den QRhiShaderStage Konstruktor verwenden.

Siehe auch type().

QShader QRhiShaderStage::shader() const

Gibt die QShader zurück, die für diese Stufe in der Grafikpipeline verwendet wird.

Siehe auch setShader().

QShader::Variant QRhiShaderStage::shaderVariant() const

Gibt die angeforderte Shader-Variante zurück.

Siehe auch setShaderVariant().

QRhiShaderStage::Type QRhiShaderStage::type() const

Gibt den Typ der Stufe zurück.

Siehe auch setType().

Verwandte Nicht-Mitglieder

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

Gibt den Hash-Wert für key zurück, wobei seed als Startwert für die Berechnung verwendet wird.

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

Gibt false zurück, wenn die Werte in den beiden Objekten QRhiShaderStage a und b gleich sind; andernfalls wird true zurückgegeben.

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

Gibt true zurück, wenn die Werte in den beiden Objekten QRhiShaderStage a und b gleich sind.

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