Auf dieser Seite

QRhiShaderStage Class

Legt den Typ und den Shader-Code für eine Shader-Stufe in der Pipeline fest. Mehr...

Header: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
Seit: 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)

Ausführliche Beschreibung

Beim Einrichten eines „ QRhiGraphicsPipeline “ wird eine Sammlung von Shader-Stufen angegeben. Der QRhiShaderStage enthält einen „ QShader “ sowie zugehörige Metadaten, wie beispielsweise die Grafikpipeline-Stufe und den auszuwählenden „ shader variant “. Es ist nicht erforderlich, die Shader-Sprache oder -Version anzugeben, da das zur Laufzeit verwendete „ QRhi “-Backend die Auswahl der geeigneten Shader-Version aus der Sammlung innerhalb des „ QShader “ übernimmt.

Die typische Verwendung erfolgt in Kombination mit ` QRhiGraphicsPipeline::setShaderStages()`, hier dargestellt anhand eines einfachen Ansatzes zum Laden der ` QShader ` aus ` .qsb `-Dateien, die offline oder zur Erstellungszeit generiert 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: Hierbei handelt es sich um eine RHI-API mit eingeschränkten Kompatibilitätsgarantien; weitere Informationen finden Sie unter QRhi.

Dokumentation zu Mitgliedstypen

enum QRhiShaderStage::Type

Gibt den Typ der Shader-Stufe an.

KonstanteWertBeschreibung
QRhiShaderStage::Vertex0Vertex-Stufe
QRhiShaderStage::TessellationControl1Tessellationssteuerungsstufe (Hull-Shader). Darf nur verwendet werden, wenn die Funktion „ QRhi::Tessellation “ unterstützt wird.
QRhiShaderStage::TessellationEvaluation2Tessellationsauswertungsphase (Domain-Shader). Darf nur verwendet werden, wenn die Funktion „ QRhi::Tessellation “ unterstützt wird.
QRhiShaderStage::Fragment4Fragment-Stufe (Pixel-Shader)
QRhiShaderStage::Compute5Berechnungsstufe. Darf nur verwendet werden, wenn die Funktion „ QRhi::Compute “ unterstützt wird.
QRhiShaderStage::Geometry3Geometrie-Phase. Darf nur verwendet werden, wenn die Funktion „ QRhi::GeometryShader “ unterstützt wird.

Dokumentation der Member-Funktionen

[noexcept default] QRhiShaderStage::QRhiShaderStage()

Erstellt eine Shader-Stufenbeschreibung für die Vertex-Stufe mit einem leeren „ QShader “.

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

Erstellt eine Shader-Stage-Beschreibung mit dem „ type “ der Stage und dem „ shader “.

Die Shader-Variante „ v “ ist standardmäßig auf „ QShader::StandardShader “ gesetzt. Ein „ QShader “ enthält mehrere Quell- und Binärversionen eines Shaders. Darüber hinaus kann es auch Varianten des Shaders mit leicht modifiziertem Code enthalten. Mit „ v “ kann dann die gewünschte Variante ausgewählt werden.

void QRhiShaderStage::setShader(const QShader &s)

Legt die Shader-Sammlung „ s “ fest.

Siehe auch shader().

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

Legt die angeforderte Shader-Variante fest: v.

Siehe auch shaderVariant().

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

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

Siehe auch ` type()`.

QShader QRhiShaderStage::shader() const

Gibt den „ QShader “ zurück, der für diese Stufe in der Grafikpipeline verwendet werden soll.

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 Stage 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 „ QRhiShaderStage “-Objekten „ a “ und „ b “ identisch 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 „ QRhiShaderStage “-Objekten „ a “ und „ b “ identisch sind.

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