Sur cette page

QRhiShaderStage Class

Spécifie le type et le code d'un shader pour une étape de shader dans le pipeline. En savoir plus...

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 « QRhiGraphicsPipeline », un ensemble d’étapes de shader est spécifié. L’objet QRhiShaderStage contient un objet QShader ainsi que certaines métadonnées associées, telles que l’étape du pipeline graphique et l’ shader variant s à sélectionner. Il n’est pas nécessaire de spécifier le langage ou la version du shader, car le backend QRhi utilisé lors de l’exécution se chargera de choisir la version appropriée du shader parmi celles de l’ QShader.

L’utilisation typique se fait en combinaison avec la fonction ` QRhiGraphicsPipeline::setShaderStages()`, illustrée ici par une approche simple permettant de charger les ` QShader ` à partir de fichiers ` .qsb ` générés hors ligne ou au moment de la compilation :

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 dont la compatibilité n’est pas entièrement garantie ; voir QRhi pour plus de détails.

Documentation sur les types de membres

enum QRhiShaderStage::Type

Spécifie le type de l'étape de shader.

ConstanteValeurDescription
QRhiShaderStage::Vertex0Étape de sommets
QRhiShaderStage::TessellationControl1Étape de contrôle de la tessellation (shader de coque). Ne doit être utilisée que lorsque la fonctionnalité « QRhi::Tessellation » est prise en charge.
QRhiShaderStage::TessellationEvaluation2Étape d'évaluation de la tessellation (shader de domaine). Ne doit être utilisée que lorsque la fonctionnalité « QRhi::Tessellation » est prise en charge.
QRhiShaderStage::Fragment4Étape de fragment (shader de pixel)
QRhiShaderStage::Compute5Étape de calcul. Ne doit être utilisée que lorsque la fonctionnalité « QRhi::Compute » est prise en charge.
QRhiShaderStage::Geometry3Étape de géométrie. Ne doit être utilisée que lorsque la fonctionnalité « QRhi::GeometryShader » est prise en charge.

Documentation des fonctions membres

[noexcept default] QRhiShaderStage::QRhiShaderStage()

Crée une description de l'étape de shader pour l'étape des sommets avec un objet ` QShader` vide.

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

Construit une description d'étape de shader à partir de l'type de l'étape et de l'shader.

L’ v de la variante de shader est par défaut QShader::StandardShader. Un QShader contient plusieurs versions source et binaires d’un shader. De plus, il peut également contenir des variantes du shader dont le code a été 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)

Définit le type de la scène sur ` t`. En pratique, les méthodes de définition ne devraient que rarement être nécessaires. La plupart des applications utiliseront probablement le constructeur ` QRhiShaderStage ` dans la plupart des cas.

Voir également type().

QShader QRhiShaderStage::shader() const

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

Voir aussi setShader().

QShader::Variant QRhiShaderStage::shaderVariant() const

Renvoie la variante de shader demandée.

Voir également setShaderVariant().

QRhiShaderStage::Type QRhiShaderStage::type() const

Renvoie le type de l'étape.

Voir aussi setType().

Éléments non membres associés

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

Renvoie la valeur de hachage de key, en utilisant seed comme valeur de départ pour le calcul.

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

Renvoie « false » si les valeurs des deux objets « QRhiShaderStage » a et b sont identiques ; 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 identiques.

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