En esta página

QOpenGLShader Class

La clase QOpenGLShader permite compilar shaders OpenGL. Más...

Cabecera: #include <QOpenGLShader>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
Hereda: QObject

Tipos Públicos

flags ShaderType
enum ShaderTypeBit { Vertex, Fragment, Geometry, TessellationControl, TessellationEvaluation, Compute }

Funciones Públicas

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

Miembros Públicos Estáticos

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

Descripción Detallada

Esta clase soporta shaders escritos en OpenGL Shading Language (GLSL) y en OpenGL/ES Shading Language (GLSL/ES).

QOpenGLShader y QOpenGLShaderProgram protegen al programador de los detalles de compilación y enlace de los sombreadores de vértices y fragmentos.

Se espera que todos los datos consumidos por QOpenGLShader sean contenido de confianza. El código fuente del shader se pasa, posiblemente después de mínimas modificaciones, al compilador de la implementación OpenGL subyacente, que es una caja negra desde la perspectiva de Qt.

Advertencia: Se recomienda a los desarrolladores de aplicaciones que consideren cuidadosamente las implicaciones potenciales antes de pasar contenido proporcionado por el usuario a funciones como compileSourceFile().

Véase también QOpenGLShaderProgram.

Documentación de tipos de miembros

enum QOpenGLShader::ShaderTypeBit
flags QOpenGLShader::ShaderType

Este enum especifica el tipo de QOpenGLShader que se está creando.

ConstanteValorDescripción
QOpenGLShader::Vertex0x0001Sombreador de vértices escrito en el lenguaje de sombreado OpenGL (GLSL).
QOpenGLShader::Fragment0x0002Sombreador de fragmentos escrito en OpenGL Shading Language (GLSL).
QOpenGLShader::Geometry0x0004Sombreadores de geometría escritos en OpenGL Shading Language (GLSL) (requiere OpenGL >= 3.2 u OpenGL ES >= 3.2).
QOpenGLShader::TessellationControl0x0008Sombreadores de control de teselación escritos en el lenguaje de sombreado OpenGL (GLSL) (requiere OpenGL >= 4.0 u OpenGL ES >= 3.2).
QOpenGLShader::TessellationEvaluation0x0010Sombreadores de evaluación de teselación escritos en el lenguaje de sombreado OpenGL (GLSL) (requiere OpenGL >= 4.0 u OpenGL ES >= 3.2).
QOpenGLShader::Compute0x0020Sombreadores de cálculo escritos en el lenguaje de sombreado OpenGL (GLSL) (requiere OpenGL >= 4.3 u OpenGL ES >= 3.1).

El tipo ShaderType es un typedef para QFlags<ShaderTypeBit>. Almacena una combinación OR de valores ShaderTypeBit.

Documentación de las funciones miembro

[explicit] QOpenGLShader::QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent = nullptr)

Construye un nuevo objeto QOpenGLShader del type especificado y lo adjunta a parent. Si los programas de sombreado no están soportados, QOpenGLShaderProgram::hasOpenGLShaderPrograms() devolverá false.

Este constructor es normalmente seguido por una llamada a compileSourceCode() o compileSourceFile().

El sombreador se asociará con el QOpenGLContext actual.

Véase también compileSourceCode() y compileSourceFile().

[virtual noexcept] QOpenGLShader::~QOpenGLShader()

Elimina este sombreador. Si el shader ha sido adjuntado a un objeto QOpenGLShaderProgram, entonces el shader actual permanecerá hasta que QOpenGLShaderProgram sea destruido.

bool QOpenGLShader::compileSourceCode(const char *source)

Establece el código source para este shader y lo compila. Devuelve true si el código fuente se compiló correctamente, false en caso contrario.

Véase también compileSourceFile().

bool QOpenGLShader::compileSourceCode(const QByteArray &source)

Establece el código source para este shader y lo compila. Devuelve true si el código fuente se compiló correctamente, false en caso contrario.

Esta es una función sobrecargada.

Ver también compileSourceFile().

bool QOpenGLShader::compileSourceCode(const QString &source)

Establece el código source para este shader y lo compila. Devuelve true si el código fuente se compiló correctamente, false en caso contrario.

Esta es una función sobrecargada.

Ver también compileSourceFile().

bool QOpenGLShader::compileSourceFile(const QString &fileName)

Establece el código fuente de este shader al contenido de fileName y lo compila. Devuelve true si se pudo abrir el archivo y compilar el código fuente, false en caso contrario.

Véase también compileSourceCode().

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

Devuelve true si los programas de sombreado del tipo type están soportados en este sistema; false en caso contrario.

context se utiliza para resolver las extensiones GLSL. Si context es nullptr, entonces se utiliza QOpenGLContext::currentContext().

bool QOpenGLShader::isCompiled() const

Devuelve true si este sombreador ha sido compilado; false en caso contrario.

Véase también compileSourceCode() y compileSourceFile().

QString QOpenGLShader::log() const

Devuelve los errores y advertencias que se produjeron durante la última compilación.

Véase también compileSourceCode() y compileSourceFile().

GLuint QOpenGLShader::shaderId() const

Devuelve el identificador OpenGL asociado a este sombreador.

Véase también QOpenGLShaderProgram::programId().

QOpenGLShader::ShaderType QOpenGLShader::shaderType() const

Devuelve el tipo de este sombreador.

QByteArray QOpenGLShader::sourceCode() const

Devuelve el código fuente de este sombreador.

Véase también 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.