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 |
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) |
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.
Konstante | Wert | Beschreibung |
---|---|---|
QRhiShaderStage::Vertex | 0 | Vertex-Stufe |
QRhiShaderStage::TessellationControl | 1 | Stufe der Tessellierungssteuerung (Hüllenshader). Muss nur verwendet werden, wenn die Funktion QRhi::Tessellation unterstützt wird. |
QRhiShaderStage::TessellationEvaluation | 2 | Tessellierungsauswertung (Domänen-Shader)-Stufe. Darf nur verwendet werden, wenn das Merkmal QRhi::Tessellation unterstützt wird. |
QRhiShaderStage::Fragment | 4 | Fragment (Pixel-Shader)-Stufe |
QRhiShaderStage::Compute | 5 | Berechnungsstufe. Darf nur verwendet werden, wenn die Funktion QRhi::Compute unterstützt wird. |
QRhiShaderStage::Geometry | 3 | Geometriestufe. 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.