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 |
- Lista de todos los miembros, incluyendo los heredados
- QOpenGLShader es parte de Renderizado en 3D.
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.
| Constante | Valor | Descripción |
|---|---|---|
QOpenGLShader::Vertex | 0x0001 | Sombreador de vértices escrito en el lenguaje de sombreado OpenGL (GLSL). |
QOpenGLShader::Fragment | 0x0002 | Sombreador de fragmentos escrito en OpenGL Shading Language (GLSL). |
QOpenGLShader::Geometry | 0x0004 | Sombreadores de geometría escritos en OpenGL Shading Language (GLSL) (requiere OpenGL >= 3.2 u OpenGL ES >= 3.2). |
QOpenGLShader::TessellationControl | 0x0008 | Sombreadores de control de teselación escritos en el lenguaje de sombreado OpenGL (GLSL) (requiere OpenGL >= 4.0 u OpenGL ES >= 3.2). |
QOpenGLShader::TessellationEvaluation | 0x0010 | Sombreadores de evaluación de teselación escritos en el lenguaje de sombreado OpenGL (GLSL) (requiere OpenGL >= 4.0 u OpenGL ES >= 3.2). |
QOpenGLShader::Compute | 0x0020 | Sombreadores 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.