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 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QOpenGLShader ist Teil von „3D-Rendering“.
Ö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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QOpenGLShader::Vertex | 0x0001 | Vertex-Shader, geschrieben in der OpenGL Shading Language (GLSL). |
QOpenGLShader::Fragment | 0x0002 | In der OpenGL Shading Language (GLSL) geschriebener Fragment-Shader. |
QOpenGLShader::Geometry | 0x0004 | In der OpenGL Shading Language (GLSL) geschriebene Geometrie-Shader (erfordert OpenGL >= 3.2 oder OpenGL ES >= 3.2). |
QOpenGLShader::TessellationControl | 0x0008 | Tessellationssteuerungs-Shader, geschrieben in der OpenGL Shading Language (GLSL) (erfordert OpenGL >= 4.0 oder OpenGL ES >= 3.2). |
QOpenGLShader::TessellationEvaluation | 0x0010 | Tessellationsauswertungs-Shader, geschrieben in der OpenGL-Shading-Sprache (GLSL) (erfordert OpenGL ≥ 4.0 oder OpenGL ES ≥ 3.2). |
QOpenGLShader::Compute | 0x0020 | Compute-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.