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 |
Verwandte Nicht-Mitglieder
| 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QRhiShaderStage::Vertex | 0 | Vertex-Stufe |
QRhiShaderStage::TessellationControl | 1 | Tessellationssteuerungsstufe (Hull-Shader). Darf nur verwendet werden, wenn die Funktion „ QRhi::Tessellation “ unterstützt wird. |
QRhiShaderStage::TessellationEvaluation | 2 | Tessellationsauswertungsphase (Domain-Shader). Darf nur verwendet werden, wenn die Funktion „ QRhi::Tessellation “ unterstützt wird. |
QRhiShaderStage::Fragment | 4 | Fragment-Stufe (Pixel-Shader) |
QRhiShaderStage::Compute | 5 | Berechnungsstufe. Darf nur verwendet werden, wenn die Funktion „ QRhi::Compute “ unterstützt wird. |
QRhiShaderStage::Geometry | 3 | Geometrie-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.