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 |
Éléments non membres associés
| 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.
| Constante | Valeur | Description |
|---|---|---|
QRhiShaderStage::Vertex | 0 | Étape de sommets |
QRhiShaderStage::TessellationControl | 1 | É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::TessellationEvaluation | 2 | É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::Fragment | 4 | Étape de fragment (shader de pixel) |
QRhiShaderStage::Compute | 5 | Étape de calcul. Ne doit être utilisée que lorsque la fonctionnalité « QRhi::Compute » est prise en charge. |
QRhiShaderStage::Geometry | 3 | É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.