Auf dieser Seite

QOpenGLShader Class

Die Klasse „QOpenGLShader“ ermöglicht das Kompilieren von OpenGL-Shadern. Mehr...

Header: #include <QOpenGLShader>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
Erbt von: 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)

Ausführliche Beschreibung

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

QOpenGLShader und QOpenGLShaderProgram entlasten den Programmierer von den Details der Kompilierung und Verknüpfung von Vertex- und Fragment-Shadern.

Es wird davon ausgegangen, dass alle von QOpenGLShader verarbeiteten Daten vertrauenswürdige Inhalte sind. Der Shader-Quellcode wird – möglicherweise nach minimalen Änderungen – an den Compiler der zugrunde liegenden OpenGL-Implementierung weitergeleitet, der aus Sicht von Qt eine Blackbox darstellt.

Warnung: Anwendungsentwicklern wird empfohlen, die möglichen Auswirkungen sorgfältig abzuwägen, bevor sie vom Benutzer bereitgestellte Inhalte an Funktionen wie compileSourceFile() übergeben.

Siehe auch ` QOpenGLShaderProgram`.

Dokumentation zu Mitgliedstypen

enum QOpenGLShader::ShaderTypeBit
flags QOpenGLShader::ShaderType

Diese Enumeration legt den Typ des zu erstellenden „ QOpenGLShader “ fest.

KonstanteWertBeschreibung
QOpenGLShader::Vertex0x0001Vertex-Shader, geschrieben in der OpenGL Shading Language (GLSL).
QOpenGLShader::Fragment0x0002In der OpenGL Shading Language (GLSL) geschriebener Fragment-Shader.
QOpenGLShader::Geometry0x0004In der OpenGL Shading Language (GLSL) geschriebene Geometrie-Shader (erfordert OpenGL >= 3.2 oder OpenGL ES >= 3.2).
QOpenGLShader::TessellationControl0x0008Tessellationssteuerungs-Shader, geschrieben in der OpenGL Shading Language (GLSL) (erfordert OpenGL >= 4.0 oder OpenGL ES >= 3.2).
QOpenGLShader::TessellationEvaluation0x0010Tessellationsauswertungs-Shader, geschrieben in der OpenGL-Shading-Sprache (GLSL) (erfordert OpenGL ≥ 4.0 oder OpenGL ES ≥ 3.2).
QOpenGLShader::Compute0x0020Compute-Shader, geschrieben in der OpenGL-Shading-Sprache (GLSL) (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 Member-Funktionen

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

Erstellt ein neues QOpenGLShader-Objekt des angegebenen type und fügt es parent hinzu. Wenn Shader-Programme nicht unterstützt werden, gibt QOpenGLShaderProgram::hasOpenGLShaderPrograms() den Wert „false“ zurück.

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

Der Shader wird dem aktuellen ` QOpenGLContext` zugeordnet.

Siehe auch „ compileSourceCode()“ und „ compileSourceFile()“.

[virtual noexcept] QOpenGLShader::~QOpenGLShader()

Löscht diesen Shader. Wenn der Shader einem „ QOpenGLShaderProgram “-Objekt zugeordnet wurde, bleibt der eigentliche Shader so lange bestehen, bis die „ QOpenGLShaderProgram “ zerstört wird.

bool QOpenGLShader::compileSourceCode(const char *source)

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

Siehe auch „ compileSourceFile()“.

bool QOpenGLShader::compileSourceCode(const QByteArray &source)

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

Dies ist eine überladene Funktion.

Siehe auch „ compileSourceFile()“.

bool QOpenGLShader::compileSourceCode(const QString &source)

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

Dies ist eine überladene Funktion.

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 vom Typ „ type “ auf diesem System unterstützt werden; andernfalls „false“.

Die „ context “ wird zur Auflösung der GLSL-Erweiterungen verwendet. Ist „ context “ gleich „ nullptr “, 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 bei der letzten Kompilierung aufgetreten sind.

Siehe auch compileSourceCode() und compileSourceFile().

GLuint QOpenGLShader::shaderId() const

Gibt die diesem Shader zugeordnete OpenGL-Kennung zurück.

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()“.

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