QOpenGLShader Class

Die Klasse QOpenGLShader ermöglicht die Kompilierung von OpenGL-Shadern. Mehr...

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

Öffentliche Typen

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

Öffentliche Funktionen

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

Statische öffentliche Mitglieder

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

Detaillierte Beschreibung

Diese Klasse unterstützt Shader, die in der OpenGL Shading Language (GLSL) und in der OpenGL/ES Shading Language (GLSL/ES) geschrieben wurden.

QOpenGLShader und QOpenGLShaderProgram befreien den Programmierer von den Details des Kompilierens und Linkens von Vertex- und Fragment-Shadern.

Siehe auch QOpenGLShaderProgram.

Dokumentation der Mitgliedstypen

enum QOpenGLShader::ShaderTypeBit
flags QOpenGLShader::ShaderType

Diese Aufzählung spezifiziert den Typ von QOpenGLShader, der gerade erstellt wird.

KonstanteWertBeschreibung
QOpenGLShader::Vertex0x0001Vertex-Shader, geschrieben in der OpenGL Shading Language (GLSL).
QOpenGLShader::Fragment0x0002Fragment-Shader, geschrieben in der OpenGL Shading Language (GLSL).
QOpenGLShader::Geometry0x0004Geometrie-Shader, geschrieben in der OpenGL Shading Language (GLSL) (erfordert OpenGL >= 3.2 oder OpenGL ES >= 3.2).
QOpenGLShader::TessellationControl0x0008Tessellierungssteuerungs-Shader, die in der OpenGL-Schattierungssprache (GLSL) geschrieben sind (erfordert OpenGL >= 4.0 oder OpenGL ES >= 3.2).
QOpenGLShader::TessellationEvaluation0x0010Tessellierungsbewertungs-Shader, die in der OpenGL-Schattierungssprache (GLSL) geschrieben sind (erfordert OpenGL >= 4.0 oder OpenGL ES >= 3.2).
QOpenGLShader::Compute0x0020Compute-Shader, die in der OpenGL-Schattierungssprache (GLSL) geschrieben sind (erfordert OpenGL >= 4.3 oder OpenGL ES >= 3.1).

Der Typ ShaderType ist ein Typedef für QFlags<ShaderTypeBit>. Er speichert eine OR-Kombination von ShaderTypeBit-Werten.

Dokumentation der Mitgliedsfunktionen

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

Konstruiert ein neues QOpenGLShader-Objekt mit dem angegebenen type und fügt es an parent an. Wenn Shader-Programme nicht unterstützt werden, gibt QOpenGLShaderProgram::hasOpenGLShaderPrograms() false zurück.

Auf diesen Konstruktor folgt normalerweise ein Aufruf von compileSourceCode() oder compileSourceFile().

Der Shader wird mit dem aktuellen QOpenGLContext verbunden.

Siehe auch compileSourceCode() und compileSourceFile().

[virtual noexcept] QOpenGLShader::~QOpenGLShader()

Löscht diesen Shader. Wenn der Shader an ein QOpenGLShaderProgram Objekt angehängt wurde, bleibt der eigentliche Shader bestehen, bis QOpenGLShaderProgram zerstört wird.

bool QOpenGLShader::compileSourceCode(const char *source)

Setzt den source Code für diesen Shader und kompiliert ihn. Gibt true zurück, wenn die Quelle erfolgreich kompiliert wurde, andernfalls false.

Siehe auch compileSourceFile().

bool QOpenGLShader::compileSourceCode(const QByteArray &source)

Dies ist eine überladene Funktion.

Setzt den source Code für diesen Shader und kompiliert ihn. Gibt true zurück, wenn die Quelle erfolgreich kompiliert wurde, andernfalls false.

Siehe auch compileSourceFile().

bool QOpenGLShader::compileSourceCode(const QString &source)

Dies ist eine überladene Funktion.

Setzt den source Code für diesen Shader und kompiliert ihn. Gibt true zurück, wenn die Quelle erfolgreich kompiliert wurde, andernfalls false.

Siehe auch compileSourceFile().

bool QOpenGLShader::compileSourceFile(const QString &fileName)

Setzt den Quellcode für diesen Shader auf den Inhalt von fileName und kompiliert ihn. Gibt true zurück, wenn die Datei geöffnet und der Quellcode kompiliert werden konnte, andernfalls false.

Siehe auch compileSourceCode().

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

Gibt true zurück, wenn Shader-Programme des Typs type auf diesem System unterstützt werden; andernfalls false.

Die context wird verwendet, um die GLSL-Erweiterungen aufzulösen. Wenn context nullptr ist, dann wird QOpenGLContext::currentContext() verwendet.

bool QOpenGLShader::isCompiled() const

Gibt true zurück, wenn dieser Shader kompiliert wurde; andernfalls false.

Siehe auch compileSourceCode() und compileSourceFile().

QString QOpenGLShader::log() const

Gibt die Fehler und Warnungen zurück, die beim letzten Kompilieren aufgetreten sind.

Siehe auch compileSourceCode() und compileSourceFile().

GLuint QOpenGLShader::shaderId() const

Gibt den OpenGL-Bezeichner zurück, der mit diesem Shader verbunden ist.

Siehe auch QOpenGLShaderProgram::programId().

QOpenGLShader::ShaderType QOpenGLShader::shaderType() const

Gibt den Typ dieses Shaders zurück.

QByteArray QOpenGLShader::sourceCode() const

Gibt den Quellcode für diesen Shader zurück.

Siehe auch compileSourceCode().

© 2025 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.