Sur cette page

QOpenGLShader Class

La classe QOpenGLShader permet de compiler des shaders OpenGL. En savoir plus...

En-tête : #include <QOpenGLShader>
CMake : find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake : QT += opengl
Hérite de : QObject

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 prend en charge les shaders écrits en langage de shader OpenGL (GLSL) et en langage de shader OpenGL/ES (GLSL/ES).

QOpenGLShader et QOpenGLShaderProgram protègent le programmeur des détails liés à la compilation et à la liaison des shaders de sommets et de fragments.

Toutes les données utilisées par QOpenGLShader sont censées provenir d’une source fiable. Le code source du shader est transmis, éventuellement après quelques modifications minimes, au compilateur de l’implémentation OpenGL sous-jacente, qui constitue une « boîte noire » du point de vue de Qt.

Avertissement : il est conseillé aux développeursd’applications d’examiner attentivement les implications potentielles avant de transmettre du contenu fourni par l’utilisateur à des fonctions telles que compileSourceFile().

Voir également QOpenGLShaderProgram.

Documentation sur les types de membres

enum QOpenGLShader::ShaderTypeBit
flags QOpenGLShader::ShaderType

Cette énumération spécifie le type d'QOpenGLShader s en cours de création.

ConstanteValeurDescription
QOpenGLShader::Vertex0x0001Shader de sommets écrit en langage de shader OpenGL (GLSL).
QOpenGLShader::Fragment0x0002Shader de fragment écrit en langage de shader OpenGL (GLSL).
QOpenGLShader::Geometry0x0004Shaders de géométrie écrits en langage de shader OpenGL (GLSL) (nécessite OpenGL >= 3.2 ou OpenGL ES >= 3.2).
QOpenGLShader::TessellationControl0x0008Shaders de contrôle de tessellation écrits en langage de shader OpenGL (GLSL) (nécessite OpenGL >= 4.0 ou OpenGL ES >= 3.2).
QOpenGLShader::TessellationEvaluation0x0010Shaders d’évaluation de tessellation écrits en langage de shader OpenGL (GLSL) (nécessite OpenGL >= 4.0 ou OpenGL ES >= 3.2).
QOpenGLShader::Compute0x0020Shaders de calcul écrits en langage de shader 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)

Crée un nouvel objet `QOpenGLShader` correspondant à l'type spécifiée et l'associe à ` parent`. Si les programmes de shader ne sont pas pris en charge, la fonction ` QOpenGLShaderProgram::hasOpenGLShaderPrograms()` renverra `false`.

Ce constructeur est normalement suivi d’un appel à ` compileSourceCode()` ou à ` compileSourceFile()`.

Le shader sera associé à l'QOpenGLContext actuel.

Voir également compileSourceCode() et compileSourceFile().

[virtual noexcept] QOpenGLShader::~QOpenGLShader()

Supprime ce shader. Si le shader a été associé à un objet « QOpenGLShaderProgram », le shader lui-même restera en place jusqu'à ce que l'objet « QOpenGLShaderProgram » soit détruit.

bool QOpenGLShader::compileSourceCode(const char *source)

Définit le code d’ source pour ce shader et le compile. Renvoie « true » si la source a été compilée avec succès, « false » dans le cas contraire.

Voir aussi compileSourceFile().

bool QOpenGLShader::compileSourceCode(const QByteArray &source)

Définit le code d'source ation de ce shader et le compile. Renvoie « true » si la source a été compilée avec succès, « false » dans le cas contraire.

Il s'agit d'une fonction surchargée.

Voir également compileSourceFile().

bool QOpenGLShader::compileSourceCode(const QString &source)

Définit le code d'source ation de ce shader et le compile. Renvoie « true » si la compilation de la source a réussi, « false » dans le cas contraire.

Il s'agit d'une fonction surchargée.

Voir également compileSourceFile().

bool QOpenGLShader::compileSourceFile(const QString &fileName)

Définit le code source de ce shader à partir du contenu de fileName et le compile. Renvoie true si le fichier a pu être ouvert et le code source compilé, false dans le cas contraire.

Voir aussi compileSourceCode().

[static] bool QOpenGLShader::hasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context = nullptr)

Renvoie « true » si les programmes de shaders de type « type » sont pris en charge sur ce système ; « false » dans le cas contraire.

La variable context est utilisée pour résoudre les extensions GLSL. Si context est défini sur nullptr, alors la fonction QOpenGLContext::currentContext() est utilisée.

bool QOpenGLShader::isCompiled() const

Renvoie « true » si ce shader a été compilé ; « false » dans le cas contraire.

Voir également compileSourceCode() et compileSourceFile().

QString QOpenGLShader::log() const

Renvoie les erreurs et les avertissements survenus lors de la dernière compilation.

Voir également 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 shader.

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.