Sur cette page

QRhiShaderStage Class

Spécifie le type et le code du shader pour une étape de shader dans le pipeline. Plus d'informations...

En-tête : #include <rhi/qrhi.h>
CMake : find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake : QT += gui-private
Depuis : Qt 6.6

Types publics

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

Fonctions publiques

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)

Description détaillée

Lors de la configuration d'un site QRhiGraphicsPipeline, une collection d'étapes de shaders est spécifiée. Le QRhiShaderStage contient un QShader et quelques métadonnées associées, telles que l'étape du pipeline graphique et le shader variant à sélectionner. Il n'est pas nécessaire de spécifier le langage ou la version du shader car le backend QRhi utilisé au moment de l'exécution se chargera de choisir la version appropriée du shader à partir de la collection contenue dans QShader.

L'utilisation typique est en combinaison avec QRhiGraphicsPipeline::setShaderStages(), illustré ici avec une approche simple pour charger QShader à partir de fichiers .qsb générés hors ligne ou au moment de la construction :

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

Remarque : il s'agit d'une API RHI avec des garanties de compatibilité limitées, voir QRhi pour plus de détails.

Documentation sur les types de membres

enum QRhiShaderStage::Type

Spécifie le type de l'étage de shaders.

ConstanteValeurDescription de l'étape
QRhiShaderStage::Vertex0Etape Sommet
QRhiShaderStage::TessellationControl1Phase de contrôle de la tessellation (nuanceur de coques). Doit être utilisé uniquement lorsque la fonction QRhi::Tessellation est prise en charge.
QRhiShaderStage::TessellationEvaluation2Étape d'évaluation de la tessellation (nuanceur de domaine). Doit être utilisé uniquement lorsque la fonction QRhi::Tessellation est prise en charge.
QRhiShaderStage::Fragment4Étape de fragmentation (nuanceur de pixels)
QRhiShaderStage::Compute5Étape de calcul. Doit être utilisée uniquement lorsque la fonctionnalité QRhi::Compute est prise en charge.
QRhiShaderStage::Geometry3Phase de géométrie. Doit être utilisé uniquement lorsque la fonctionnalité QRhi::GeometryShader est prise en charge.

Documentation des fonctions membres

[noexcept] QRhiShaderStage::QRhiShaderStage()

Construit une description d'étape de shader pour l'étape de vertex avec un QShader vide.

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

Construit une description de scène de shader avec le type de la scène et le shader.

La variante du nuanceur v devient par défaut QShader::StandardShader. Un site QShader contient plusieurs versions sources et binaires d'un nuanceur. En outre, il peut également contenir des variantes du shader avec un code légèrement modifié. v peut alors être utilisé pour sélectionner la variante souhaitée.

void QRhiShaderStage::setShader(const QShader &s)

Définit la collection de shaders s.

Voir également shader().

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

Définit la variante de shader demandée v.

Voir également shaderVariant().

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

Fixe le type de la scène à t. Les fixateurs sont rarement nécessaires dans la pratique. La plupart des applications utiliseront probablement le constructeur QRhiShaderStage dans la plupart des cas.

Voir également type().

QShader QRhiShaderStage::shader() const

Renvoie l'adresse QShader à utiliser pour cette étape du pipeline graphique.

Voir aussi setShader().

QShader::Variant QRhiShaderStage::shaderVariant() const

Renvoie la variante de shader demandée.

Voir aussi setShaderVariant().

QRhiShaderStage::Type QRhiShaderStage::type() const

Renvoie le type de la scène.

Voir également setType().

Non-membres associés

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

Renvoie la valeur de hachage pour key, en utilisant seed comme base de calcul.

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

Renvoie false si les valeurs des deux objets QRhiShaderStage a et b sont égales ; sinon, renvoie true.

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

Renvoie true si les valeurs des deux objets QRhiShaderStage a et b sont égales.

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