QOpenGLShader Class
La classe QOpenGLShader permet de compiler les shaders OpenGL. Plus d'informations...
| En-tête : | #include <QOpenGLShader> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS OpenGL)target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
| qmake : | QT += opengl |
| Héritages : | QObject |
- Liste de tous les membres, y compris les membres hérités
- QOpenGLShader fait partie de Rendering in 3D.
Types publics
| flags | ShaderType |
| enum | ShaderTypeBit { Vertex, Fragment, Geometry, TessellationControl, TessellationEvaluation, Compute } |
Fonctions publiques
| QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent = nullptr) | |
| virtual | ~QOpenGLShader() |
| bool | compileSourceCode(const char *source) |
| bool | compileSourceCode(const QByteArray &source) |
| bool | compileSourceCode(const QString &source) |
| bool | compileSourceFile(const QString &fileName) |
| bool | isCompiled() const |
| QString | log() const |
| GLuint | shaderId() const |
| QOpenGLShader::ShaderType | shaderType() const |
| QByteArray | sourceCode() const |
Membres publics statiques
| bool | hasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context = nullptr) |
Description détaillée
Cette classe supporte les shaders écrits dans le langage d'ombrage OpenGL (GLSL) et dans le langage d'ombrage OpenGL/ES (GLSL/ES).
QOpenGLShader et QOpenGLShaderProgram protègent le programmeur des détails de la compilation et de la liaison des vertex et des fragment shaders.
Toutes les données consommées par QOpenGLShader sont censées être des contenus fiables. Le code source du shader est transmis, éventuellement après des modifications minimales, au compilateur de l'implémentation OpenGL sous-jacente, qui est une boîte noire du point de vue de Qt.
Avertissement : Il est conseillé aux développeurs d'applications d'examiner attentivement les implications potentielles avant de transmettre un contenu fourni par l'utilisateur à des fonctions telles que compileSourceFile().
Voir aussi QOpenGLShaderProgram.
Documentation sur les types de membres
enum QOpenGLShader::ShaderTypeBit
flags QOpenGLShader::ShaderType
Cette énumération spécifie le type de QOpenGLShader qui est créé.
| Constante | Valeur | Description |
|---|---|---|
QOpenGLShader::Vertex | 0x0001 | Nuanceur de sommet écrit dans le langage d'ombrage OpenGL (GLSL). |
QOpenGLShader::Fragment | 0x0002 | Shader de fragments écrit dans le langage d'ombrage OpenGL (GLSL). |
QOpenGLShader::Geometry | 0x0004 | Shaders de géométrie écrits dans le langage d'ombrage OpenGL (GLSL) (nécessite OpenGL >= 3.2 ou OpenGL ES >= 3.2). |
QOpenGLShader::TessellationControl | 0x0008 | Les shaders de contrôle de tessellation écrits dans le langage d'ombrage OpenGL (GLSL) (nécessite OpenGL >= 4.0 ou OpenGL ES >= 3.2). |
QOpenGLShader::TessellationEvaluation | 0x0010 | Les shaders d'évaluation de tessellation écrits dans le langage d'ombrage OpenGL (GLSL) (nécessite OpenGL >= 4.0 ou OpenGL ES >= 3.2). |
QOpenGLShader::Compute | 0x0020 | Les shaders de calcul écrits dans le langage d'ombrage OpenGL (GLSL) (nécessite OpenGL >= 4.3 ou OpenGL ES >= 3.1). |
Le type ShaderType est un typedef pour QFlags<ShaderTypeBit>. Il stocke une combinaison OR de valeurs ShaderTypeBit.
Documentation des fonctions membres
[explicit] QOpenGLShader::QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent = nullptr)
Construit un nouvel objet QOpenGLShader du type spécifié type et l'attache à parent. Si les programmes de shaders ne sont pas pris en charge, QOpenGLShaderProgram::hasOpenGLShaderPrograms() renverra false.
Ce constructeur est normalement suivi d'un appel à compileSourceCode() ou compileSourceFile().
Le shader sera associé à l'adresse courante QOpenGLContext.
Voir également compileSourceCode() et compileSourceFile().
[virtual noexcept] QOpenGLShader::~QOpenGLShader()
Supprime ce shader. Si le shader a été attaché à un objet QOpenGLShaderProgram, le shader restera en place jusqu'à ce que l'objet QOpenGLShaderProgram soit détruit.
bool QOpenGLShader::compileSourceCode(const char *source)
Définit le code source pour ce shader et le compile. Retourne true si la source a été compilée avec succès, false sinon.
Voir aussi compileSourceFile().
bool QOpenGLShader::compileSourceCode(const QByteArray &source)
Définit le code source pour ce shader et le compile. Retourne true si la source a été compilée avec succès, false sinon.
Il s'agit d'une fonction surchargée.
Voir aussi compileSourceFile().
bool QOpenGLShader::compileSourceCode(const QString &source)
Définit le code source pour ce shader et le compile. Retourne true si la source a été compilée avec succès, false sinon.
Il s'agit d'une fonction surchargée.
Voir aussi compileSourceFile().
bool QOpenGLShader::compileSourceFile(const QString &fileName)
Fixe le code source de ce shader au contenu de fileName et le compile. Retourne true si le fichier a pu être ouvert et le code source compilé, false sinon.
Voir aussi compileSourceCode().
[static] bool QOpenGLShader::hasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context = nullptr)
Renvoie true si les programmes de nuanceurs de type type sont pris en charge sur ce système ; faux sinon.
context est utilisé pour résoudre les extensions GLSL. Si context est nullptr, alors QOpenGLContext::currentContext() est utilisé.
bool QOpenGLShader::isCompiled() const
Retourne true si ce shader a été compilé, false sinon.
Voir aussi compileSourceCode() et compileSourceFile().
QString QOpenGLShader::log() const
Renvoie les erreurs et les avertissements survenus lors de la dernière compilation.
Voir aussi compileSourceCode() et compileSourceFile().
GLuint QOpenGLShader::shaderId() const
Renvoie l'identifiant OpenGL associé à ce shader.
Voir aussi QOpenGLShaderProgram::programId().
QOpenGLShader::ShaderType QOpenGLShader::shaderType() const
Renvoie le type de ce nuanceur.
QByteArray QOpenGLShader::sourceCode() const
Renvoie le code source de ce shader.
Voir aussi compileSourceCode().
© 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.