Auf dieser Seite

QOpenGLShaderProgram Class

Die Klasse „QOpenGLShaderProgram“ ermöglicht das Einbinden und Verwenden von OpenGL-Shader-Programmen. Mehr...

Header: #include <QOpenGLShaderProgram>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
Erbt von: QObject

Öffentliche Funktionen

QOpenGLShaderProgram(QObject*parent = nullptr)
virtuell ~QOpenGLShaderProgram()
bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const char*source)
bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray&source)
bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString&source)
bool addCacheableShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString&fileName)
bool addShader(QOpenGLShader*shader)
bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const char*source)
bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray&source)
bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString&source)
bool addShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString&fileName)
int attributeLocation(const char*name) const
int attributeLocation(const QByteArray&name) const
int attributeLocation(const QString&name) const
bool bind()
void bindAttributeLocation(const char*name, int location)
void bindAttributeLocation(const QByteArray&name, int location)
void bindAttributeLocation(const QString&name, int location)
bool create()
QList<float> defaultInnerTessellationLevels() const
QList<float> defaultOuterTessellationLevels() const
void disableAttributeArray(int position)
void disableAttributeArray(const char*name)
void enableAttributeArray(int Ort)
void enableAttributeArray(const char*name)
bool isLinked() const
virtuell bool link()
QString log() const
int maxGeometryOutputVertices() const
int patchVertexCount() const
GLuint programId() const
void release()
void removeAllShaders()
void removeShader(QOpenGLShader*shader)
void setAttributeArray(int location, const QVector2D*values, int stride = 0)
void setAttributeArray(int location, const QVector3D*values, int stride = 0)
void setAttributeArray(int location, const QVector4D*values, int stride = 0)
void setAttributeArray(int location, const GLfloat*values, int tupleSize, int stride = 0)
void setAttributeArray(int location, GLenum type, const void*values, int tupleSize, int stride = 0)
void setAttributeArray(const char*name, const QVector2D*values, int stride = 0)
void setAttributeArray(const char*name, const QVector3D*values, int stride = 0)
void setAttributeArray(const char*name, const QVector4D*values, int stride = 0)
void setAttributeArray(const char*name, const GLfloat*values, int tupleSize, int stride = 0)
void setAttributeArray(const char*name, GLenum type, const void*values, int tupleSize, int stride = 0)
void setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride = 0)
void setAttributeBuffer(const char*name, GLenum type, int offset, int tupleSize, int stride = 0)
void setAttributeValue(int location, GLfloat value)
void setAttributeValue(int location, const QColor&value)
void setAttributeValue(int position, const QVector2D&Wert)
void setAttributeValue(int position, const QVector3D&wert)
void setAttributeValue(int position, const QVector4D&Wert)
void setAttributeValue(int position, GLfloat x, GLfloat y)
void setAttributeValue(int position, GLfloat x, GLfloat y, GLfloat z)
void setAttributeValue(int location, const GLfloat*values, int columns, int rows)
void setAttributeValue(int position, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
void setAttributeValue(const char*name, GLfloat value)
void setAttributeValue(const char*name, const QColor&value)
void setAttributeValue(const char*name, const QVector2D&value)
void setAttributeValue(const char*name, const QVector3D&value)
void setAttributeValue(const char*name, const QVector4D&value)
void setAttributeValue(const char*name, GLfloat x, GLfloat y)
void setAttributeValue(const char*name, GLfloat x, GLfloat y, GLfloat z)
void setAttributeValue(const char*name, const GLfloat*values, int columns, int rows)
void setAttributeValue(const char*name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
void setDefaultInnerTessellationLevels(const QList<float>&levels)
void setDefaultOuterTessellationLevels(const QList<float>&levels)
void setPatchVertexCount(int count)
void setUniformValue(int location, GLfloat value)
void setUniformValue(int position, GLint Wert)
void setUniformValue(const char*name, const QMatrix3x4&value)
void setUniformValue(const char*name, const QMatrix4x2&value)
void setUniformValue(const char*name, const QMatrix4x3&value)
void setUniformValue(const char*name, const QMatrix4x4&value)
void setUniformValue(const char*name, const QPoint&point)
void setUniformValue(const char*name, const QPointF&point)
void setUniformValue(const char*name, const QSize&size)
void setUniformValue(const char*name, const QSizeF&size)
void setUniformValue(const char*name, const QTransform&value)
void setUniformValue(const char*name, const QVector2D&value)
void setUniformValue(const char*name, const QVector3D&value)
void setUniformValue(const char*name, const QVector4D&value)
void setUniformValue(int location, const GLfloat[2][2] value)
void setUniformValue(int position, const GLfloat[3][3] Wert)
void setUniformValue(int position, const GLfloat[4][4] Wert)
void setUniformValue(const char*name, GLfloat x, GLfloat y)
void setUniformValue(const char*name, GLfloat x, GLfloat y, GLfloat z)
void setUniformValue(const char*name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
void setUniformValue(int location, GLuint value)
void setUniformValue(int position, const QColor&Farbe)
void setUniformValue(int position, const QMatrix2x2&Wert)
void setUniformValue(int position, const QMatrix2x3&wert)
void setUniformValue(int position, const QMatrix2x4&Wert)
void setUniformValue(int position, const QMatrix3x2&Wert)
void setUniformValue(int position, const QMatrix3x3&Wert)
void setUniformValue(int position, const QMatrix3x4&Wert)
void setUniformValue(int position, const QMatrix4x2&Wert)
void setUniformValue(int position, const QMatrix4x3&Wert)
void setUniformValue(int position, const QMatrix4x4&Wert)
void setUniformValue(int position, const QPoint&Punkt)
void setUniformValue(int position, const QPointF&Punkt)
void setUniformValue(int position, const QSize&größe)
void setUniformValue(int position, const QSizeF&grösse)
void setUniformValue(int position, const QTransform&wert)
void setUniformValue(int position, const QVector2D&wert)
void setUniformValue(int position, const QVector3D&wert)
void setUniformValue(int position, const QVector4D&Wert)
void setUniformValue(int position, GLfloat x, GLfloat y)
void setUniformValue(int position, GLfloat x, GLfloat y, GLfloat z)
void setUniformValue(int position, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
void setUniformValue(const char*name, GLfloat value)
void setUniformValue(const char*name, GLint value)
void setUniformValue(const char*name, GLuint value)
void setUniformValue(const char*name, const GLfloat[2][2] value)
void setUniformValue(const char*name, const GLfloat[3][3] value)
void setUniformValue(const char*name, const GLfloat[4][4] value)
void setUniformValue(const char*name, const QColor&color)
void setUniformValue(const char*name, const QMatrix2x2&value)
void setUniformValue(const char*name, const QMatrix2x3&value)
void setUniformValue(const char*name, const QMatrix2x4&value)
void setUniformValue(const char*name, const QMatrix3x2&value)
void setUniformValue(const char*name, const QMatrix3x3&value)
void setUniformValueArray(int position, const GLint*Werte, int Anzahl)
void setUniformValueArray(int position, const GLuint*Werte, int Anzahl)
void setUniformValueArray(int position, const QMatrix2x2*werte, int Anzahl)
void setUniformValueArray(int position, const QMatrix2x3*werte, int anzahl)
void setUniformValueArray(int position, const QMatrix2x4*werte, int Anzahl)
void setUniformValueArray(int position, const QMatrix3x2*Werte, int Anzahl)
void setUniformValueArray(int position, const QMatrix3x3*werte, int anzahl)
void setUniformValueArray(int position, const QMatrix3x4*werte, int anzahl)
void setUniformValueArray(int position, const QMatrix4x2*werte, int anzahl)
void setUniformValueArray(int position, const QMatrix4x3*werte, int Anzahl)
void setUniformValueArray(int position, const QMatrix4x4*werte, int anzahl)
void setUniformValueArray(int position, const QVector2D*werte, int anzahl)
void setUniformValueArray(int position, const QVector3D*Werte, int Anzahl)
void setUniformValueArray(int position, const QVector4D*Werte, int Anzahl)
void setUniformValueArray(int position, const GLfloat*Werte, int Anzahl, int Tupelgröße)
void setUniformValueArray(const char*name, const GLint*values, int count)
void setUniformValueArray(const char*name, const GLuint*values, int count)
void setUniformValueArray(const char*name, const QMatrix2x2*values, int count)
void setUniformValueArray(const char*name, const QMatrix2x3*values, int count)
void setUniformValueArray(const char*name, const QMatrix2x4*values, int count)
void setUniformValueArray(const char*name, const QMatrix3x2*values, int count)
void setUniformValueArray(const char*name, const QMatrix3x3*values, int count)
void setUniformValueArray(const char*name, const QMatrix3x4*values, int count)
void setUniformValueArray(const char*name, const QMatrix4x2*values, int count)
void setUniformValueArray(const char*name, const QMatrix4x3*values, int count)
void setUniformValueArray(const char*name, const QMatrix4x4*values, int count)
void setUniformValueArray(const char*name, const QVector2D*values, int count)
void setUniformValueArray(const char*name, const QVector3D*values, int count)
void setUniformValueArray(const char*name, const QVector4D*values, int count)
void setUniformValueArray(const char*name, const GLfloat*values, int count, int tupleSize)
QList<QOpenGLShader *> shaders() const
int uniformLocation(const char*name) const
int uniformLocation(const QByteArray&name) const
int uniformLocation(const QString&name) const

Statische öffentliche Mitglieder

bool hasOpenGLShaderPrograms(QOpenGLContext *context = nullptr)

Ausführliche Beschreibung

Einführung

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

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

Das folgende Beispiel erstellt ein Vertex-Shader-Programm unter Verwendung der bereitgestellten Quell code. Nach dem Kompilieren und Verknüpfen wird das Shader-Programm im aktuellen „ QOpenGLContext “ durch den Aufruf von ` QOpenGLShaderProgram::bind()` aktiviert:

QOpenGLShader shader(QOpenGLShader::Vertex);
shader.compileSourceCode(code);

QOpenGLShaderProgram program(context);
program.addShader(&shader);
program.link();

program.bind();

Portable Shader schreiben

Shader-Programme lassen sich aufgrund unterschiedlicher Unterstützungsgrade für Standard-Vertex-Attribute und Uniform-Variablen oft nur schwer über verschiedene OpenGL-Implementierungen hinweg wiederverwenden. Insbesondere fehlen in GLSL/ES alle Standardvariablen, die auf Desktop-OpenGL-Systemen vorhanden sind: gl_Vertex, gl_Normal, gl_Color und so weiter. Bei Desktop-OpenGL fehlen die Variablenqualifizierer highp, mediump und lowp.

Die Klasse `QOpenGLShaderProgram` erleichtert das Schreiben portabler Shader, indem sie allen Shader-Programmen unter Desktop-OpenGL die folgenden Zeilen voranstellt:

#define highp
#define mediump
#define lowp

Dadurch lassen sich die meisten GLSL/ES-Shader-Programme auf Desktop-Systemen ausführen. Der Programmierer sollte sich auf Funktionen beschränken, die in GLSL/ES vorhanden sind, und Standardvariablennamen vermeiden, die nur auf dem Desktop funktionieren.

Einfaches Shader-Beispiel

program.addShaderFromSourceCode(QOpenGLShader::Vertex,
    "attribute highp vec4 vertex;\n"
    "uniform highp mat4 matrix;\n"
    "void main(void)\n"
    "{\n"
    "   gl_Position = matrix * vertex;\n"
    "}");
program.addShaderFromSourceCode(QOpenGLShader::Fragment,
    "uniform mediump vec4 color;\n"
    "void main(void)\n"
    "{\n"
    "   gl_FragColor = color;\n"
    "}");
program.link();
program.bind();

int vertexLocation = program.attributeLocation("vertex");
int matrixLocation = program.uniformLocation("matrix");
int colorLocation = program.uniformLocation("color");

Wenn das oben genannte Shader-Programm aktiv ist, können wir wie folgt ein grünes Dreieck zeichnen:

static GLfloat const triangleVertices[] = {
    60.0f,  10.0f,  0.0f,
    110.0f, 110.0f, 0.0f,
    10.0f,  110.0f, 0.0f
};

QColor color(0, 255, 0, 255);

QMatrix4x4 pmvMatrix;
pmvMatrix.ortho(rect());

program.enableAttributeArray(vertexLocation);
program.setAttributeArray(vertexLocation, triangleVertices, 3);
program.setUniformValue(matrixLocation, pmvMatrix);
program.setUniformValue(colorLocation, color);

glDrawArrays(GL_TRIANGLES, 0, 3);

program.disableAttributeArray(vertexLocation);

Binäre Shader und Programme

Binäre Shader können mithilfe von ` glShaderBinary() ` für den Rückgabewert von ` QOpenGLShader::shaderId()` angegeben werden. Die ` QOpenGLShader `-Instanz, die den Binärcode enthält, kann dann mit ` addShader()` zum Shader-Programm hinzugefügt und wie gewohnt mit ` link()` verknüpft werden.

Binärprogramme können mithilfe von ` glProgramBinaryOES() ` auf den Rückgabewert von ` programId()` angewendet werden. Anschließend sollte die Anwendung ` link()` aufrufen, wodurch erkannt wird, dass das Programm bereits angegeben und verknüpft wurde, sodass weitere Operationen am Shader-Programm durchgeführt werden können. Die ID des Shader-Programms kann explizit mithilfe der Funktion ` create()` erstellt werden.

Zwischenspeicherung von Programm-Binärdateien

Ab Qt 5.9 ist die Unterstützung für das Zwischenspeichern von Programm-Binärdateien auf der Festplatte integriert. Um dies zu aktivieren, wechseln Sie zur Verwendung von ` addCacheableShaderFromSourceCode()` und ` addCacheableShaderFromSourceFile()`. Mit einem OpenGL ES 3.x-Kontext oder Unterstützung für ` GL_ARB_get_program_binary` werden Programm-Binärdateien dadurch transparent unter ` QStandardPaths::CacheLocation` zwischengespeichert. Wenn diese Unterstützung nicht verfügbar ist, entspricht der Aufruf der cachefähigen Funktionsvarianten dem Aufruf der normalen Varianten.

Hinweis: Bei einigen Treibern stehen keine Binärformate zur Verfügung, obwohl sie die Erweiterung ankündigen oder OpenGL ES 3.0 unterstützen. In diesem Fall wird die Unterstützung für Programm-Binärdateien deaktiviert.

Sicherheitshinweise

Es wird davon ausgegangen, dass alle von `QOpenGLShaderProgram` 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 ` addShaderFromSourceFile()` übergeben.

Siehe auch ` QOpenGLShader`.

Dokumentation der Mitgliedsfunktionen

[explicit] QOpenGLShaderProgram::QOpenGLShaderProgram(QObject *parent = nullptr)

Erstellt ein neues Shader-Programm und ordnet es „ parent “ zu. Das Programm ist erst gültig, wenn „ addShader()“ aufgerufen wird.

Das Shader-Programm wird dem aktuellen ` QOpenGLContext` zugeordnet.

Siehe auch ` addShader()`.

[virtual noexcept] QOpenGLShaderProgram::~QOpenGLShaderProgram()

Löscht dieses Shader-Programm.

bool QOpenGLShaderProgram::addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source)

Registriert den Shader der angegebenen ` type ` und ` source ` in diesem Programm. Im Gegensatz zu ` addShaderFromSourceCode()` führt diese Funktion keine Kompilierung durch. Die Kompilierung wird an ` link()` übertragen und findet möglicherweise gar nicht statt, da ` link()` unter Umständen eine Programm-Binärdatei aus dem Shader-Disk-Cache von Qt verwendet. Dies führt in der Regel zu einer deutlichen Leistungssteigerung.

Gibt „true“ zurück, wenn der Shader registriert oder – falls er nicht im Cache vorhanden ist – erfolgreich kompiliert wurde; „false“, wenn ein Fehler aufgetreten ist. Die Kompilierungsfehlermeldungen können über ` log()` abgerufen werden.

Wenn der Festplatten-Cache deaktiviert ist – beispielsweise über ` Qt::AA_DisableShaderDiskCache ` – oder der OpenGL-Kontext keine Unterstützung für Kontext-Binärdateien bietet, entspricht der Aufruf dieser Funktion dem Aufruf von ` addShaderFromSourceCode()`.

Siehe auch addShaderFromSourceCode() und addCacheableShaderFromSourceFile().

bool QOpenGLShaderProgram::addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source)

Registriert den Shader der angegebenen ` type ` und ` source ` in diesem Programm. Im Gegensatz zu ` addShaderFromSourceCode()` führt diese Funktion keine Kompilierung durch. Die Kompilierung wird auf ` link()` verschoben und findet möglicherweise gar nicht statt, da ` link()` unter Umständen eine Programm-Binärdatei aus dem Shader-Disk-Cache von Qt verwendet. Dies führt in der Regel zu einer deutlichen Leistungssteigerung.

Gibt „true“ zurück, wenn der Shader registriert wurde oder – falls er nicht im Cache vorhanden ist – erfolgreich kompiliert wurde; „false“, wenn ein Fehler aufgetreten ist. Die Kompilierungsfehlermeldungen können über log() abgerufen werden.

Wenn der Festplatten-Cache deaktiviert ist – beispielsweise über ` Qt::AA_DisableShaderDiskCache ` – oder der OpenGL-Kontext keine Unterstützung für Kontext-Binärdateien bietet, entspricht der Aufruf dieser Funktion dem Aufruf von ` addShaderFromSourceCode()`.

Dies ist eine überladene Funktion.

Siehe auch addShaderFromSourceCode() und addCacheableShaderFromSourceFile().

bool QOpenGLShaderProgram::addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source)

Registriert den Shader der angegebenen type und source für dieses Programm. Im Gegensatz zu addShaderFromSourceCode() führt diese Funktion keine Kompilierung durch. Die Kompilierung wird auf link() verschoben und findet möglicherweise gar nicht statt, da link() unter Umständen eine Programm-Binärdatei aus dem Shader-Festplatten-Cache von Qt verwendet. Dies führt in der Regel zu einer erheblichen Leistungssteigerung.

Wenn der Festplatten-Cache deaktiviert ist, beispielsweise über ` Qt::AA_DisableShaderDiskCache `, oder der OpenGL-Kontext keine Unterstützung für Kontext-Binärdateien bietet, entspricht der Aufruf dieser Funktion dem Aufruf von ` addShaderFromSourceCode()`.

Dies ist eine überladene Funktion.

Siehe auch addShaderFromSourceCode() und addCacheableShaderFromSourceFile().

bool QOpenGLShaderProgram::addCacheableShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName)

Registriert den Shader der angegebenen type und fileName in diesem Programm. Im Gegensatz zu addShaderFromSourceFile() führt diese Funktion keine Kompilierung durch. Die Kompilierung wird an link() delegiert und findet möglicherweise gar nicht statt, da link() unter Umständen eine Programm-Binärdatei aus dem Shader-Disk-Cache von Qt verwendet. Dies führt in der Regel zu einer deutlichen Leistungssteigerung.

Gibt „true“ zurück, wenn die Datei erfolgreich gelesen wurde, und „false“, wenn die Datei nicht geöffnet werden konnte oder die normale, nicht zwischengespeicherte Kompilierung des Shaders fehlgeschlagen ist. Die Kompilierungsfehlermeldungen können über ` log()` abgerufen werden.

Wenn der Festplatten-Cache deaktiviert ist, beispielsweise über ` Qt::AA_DisableShaderDiskCache `, oder der OpenGL-Kontext keine Unterstützung für Kontext-Binärdateien bietet, entspricht der Aufruf dieser Funktion dem Aufruf von ` addShaderFromSourceFile()`.

Siehe auch addShaderFromSourceFile() und addCacheableShaderFromSourceCode().

bool QOpenGLShaderProgram::addShader(QOpenGLShader *shader)

Fügt diesem Shader-Programm ein kompiliertes „ shader “-Objekt hinzu. Gibt „ true “ zurück, wenn der Shader hinzugefügt werden konnte, andernfalls „false“.

Das Eigentum am shader -Objekt verbleibt beim Aufrufer. Es wird nicht gelöscht, wenn diese QOpenGLShaderProgram -Instanz gelöscht wird. Dadurch kann der Aufrufer denselben Shader zu mehreren Shader-Programmen hinzufügen.

Siehe auch addShaderFromSourceCode(), addShaderFromSourceFile(), removeShader(), link() und removeAllShaders().

bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source)

Kompiliert „ source “ als Shader des angegebenen „ type “ und fügt ihn diesem Shader-Programm hinzu. Gibt „ true “ zurück, wenn die Kompilierung erfolgreich war, andernfalls „false“. Die Kompilierungsfehler und -warnungen werden über „ log()“ bereitgestellt.

Diese Funktion ist als Abkürzung gedacht, um Vertex- und Fragment-Shader schnell zu einem Shader-Programm hinzuzufügen, ohne zuvor eine Instanz von ` QOpenGLShader ` erstellen zu müssen.

Siehe auch addShader(), addShaderFromSourceFile(), removeShader(), link(), log() und removeAllShaders().

bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source)

Kompiliert „ source “ als Shader des angegebenen „ type “ und fügt ihn diesem Shader-Programm hinzu. Gibt „ true “ zurück, wenn die Kompilierung erfolgreich war, andernfalls „false“. Die Kompilierungsfehler und -warnungen werden über „ log()“ bereitgestellt.

Diese Funktion dient als Abkürzung, um Vertex- und Fragment-Shader schnell zu einem Shader-Programm hinzuzufügen, ohne zuvor eine Instanz von ` QOpenGLShader ` erstellen zu müssen.

Dies ist eine überladene Funktion.

Siehe auch ` addShader()`, ` addShaderFromSourceFile()`, ` removeShader()`, ` link()`, ` log()` und ` removeAllShaders()`.

bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source)

Kompiliert „ source “ als Shader des angegebenen „ type “ und fügt ihn diesem Shader-Programm hinzu. Gibt „ true “ zurück, wenn die Kompilierung erfolgreich war, andernfalls „false“. Die Kompilierungsfehler und -warnungen werden über „ log()“ bereitgestellt.

Diese Funktion ist als Abkürzung gedacht, um Vertex- und Fragment-Shader schnell zu einem Shader-Programm hinzuzufügen, ohne zuvor eine Instanz von ` QOpenGLShader ` erstellen zu müssen.

Dies ist eine überladene Funktion.

Siehe auch addShader(), addShaderFromSourceFile(), removeShader(), link(), log() und removeAllShaders().

bool QOpenGLShaderProgram::addShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName)

Kompiliert den Inhalt von ` fileName ` als Shader des angegebenen ` type ` und fügt ihn diesem Shader-Programm hinzu. Gibt ` true ` zurück, wenn die Kompilierung erfolgreich war, andernfalls `false`. Die Kompilierungsfehler und -warnungen werden über ` log()` bereitgestellt.

Diese Funktion ist als Abkürzung gedacht, um Vertex- und Fragment-Shader schnell zu einem Shader-Programm hinzuzufügen, ohne zuvor eine Instanz von ` QOpenGLShader ` erstellen zu müssen.

Siehe auch addShader() und addShaderFromSourceCode().

int QOpenGLShaderProgram::attributeLocation(const char *name) const

Gibt die Position des Attributs „ name “ innerhalb der Parameterliste dieses Shader-Programms zurück. Gibt -1 zurück, wenn „ name “ kein gültiges Attribut für dieses Shader-Programm ist.

Siehe auch „ uniformLocation()“ und „ bindAttributeLocation()“.

int QOpenGLShaderProgram::attributeLocation(const QByteArray &name) const

Gibt die Position des Attributs „ name “ innerhalb der Parameterliste dieses Shader-Programms zurück. Gibt -1 zurück, wenn „ name “ kein gültiges Attribut für dieses Shader-Programm ist.

Dies ist eine überladene Funktion.

Siehe auch „ uniformLocation()“ und „ bindAttributeLocation()“.

int QOpenGLShaderProgram::attributeLocation(const QString &name) const

Gibt die Position des Attributs „ name “ innerhalb der Parameterliste dieses Shader-Programms zurück. Gibt -1 zurück, wenn „ name “ kein gültiges Attribut für dieses Shader-Programm ist.

Dies ist eine überladene Funktion.

Siehe auch „ uniformLocation()“ und „ bindAttributeLocation()“.

bool QOpenGLShaderProgram::bind()

Bindet dieses Shader-Programm an den aktiven „ QOpenGLContext “ und macht es zum aktuellen Shader-Programm. Alle zuvor gebundenen Shader-Programme werden freigegeben. Dies entspricht dem Aufruf von „ glUseProgram() “ auf „ programId “ (). Gibt „ true “ zurück, wenn das Programm erfolgreich gebunden wurde; andernfalls „false“. Wenn das Shader-Programm noch nicht verknüpft wurde oder neu verknüpft werden muss, ruft diese Funktion „ link “ () auf.

Siehe auch link() und release().

void QOpenGLShaderProgram::bindAttributeLocation(const char *name, int location)

Bindet das Attribut „ name “ an die angegebene „ location “. Diese Funktion kann vor oder nach dem Verknüpfen des Programms aufgerufen werden. Allen Attributen, die beim Verknüpfen des Programms nicht explizit gebunden wurden, werden automatisch Speicherorte zugewiesen.

Wird diese Funktion nach dem Verknüpfen des Programms aufgerufen, muss das Programm neu verknüpft werden, damit die Änderung wirksam wird.

Siehe auch ` attributeLocation()`.

void QOpenGLShaderProgram::bindAttributeLocation(const QByteArray &name, int location)

Bindet das Attribut „ name “ an die angegebene „ location “. Diese Funktion kann vor oder nach dem Verknüpfen des Programms aufgerufen werden. Allen Attributen, die beim Verknüpfen des Programms nicht explizit gebunden wurden, werden automatisch Speicherorte zugewiesen.

Wird diese Funktion nach dem Verknüpfen des Programms aufgerufen, muss das Programm neu verknüpft werden, damit die Änderung wirksam wird.

Dies ist eine überladene Funktion.

Siehe auch „ attributeLocation()“.

void QOpenGLShaderProgram::bindAttributeLocation(const QString &name, int location)

Bindet das Attribut „ name “ an die angegebene Adresse „ location “. Diese Funktion kann vor oder nach dem Verknüpfen des Programms aufgerufen werden. Allen Attributen, die beim Verknüpfen des Programms nicht explizit gebunden wurden, werden automatisch Speicherorte zugewiesen.

Wird diese Funktion nach dem Verknüpfen des Programms aufgerufen, muss das Programm neu verknüpft werden, damit die Änderung wirksam wird.

Dies ist eine überladene Funktion.

Siehe auch „ attributeLocation()“.

bool QOpenGLShaderProgram::create()

Fordert die sofortige Erstellung der ID des Shader-Programms an. Gibt bei Erfolg „ true “ zurück; andernfalls „ false “.

Diese Funktion ist vor allem dann nützlich, wenn „ QOpenGLShaderProgram “ mit anderen OpenGL-Funktionen kombiniert wird, die direkt auf die Shader-Programm-ID zugreifen, wie beispielsweise „ GL_OES_get_program_binary “.

Bei normaler Verwendung des Shader-Programms wird dessen ID bei Bedarf erstellt.

Siehe auch ` programId()`.

QList<float> QOpenGLShaderProgram::defaultInnerTessellationLevels() const

Gibt die Standardwerte für die inneren Tessellationsstufen zurück, die vom Tessellationsprimitivgenerator verwendet werden sollen, falls der Tessellationssteuerungs-Shader diese nicht ausgibt. Weitere Informationen zu OpenGL und Tessellations-Shadern finden Sie unter „OpenGL-Tessellations-Shader“.

Gibt einen „ QList “ vom Typ „float“ zurück, der die inneren Tessellationsstufen beschreibt. Der Vektor enthält immer zwei Elemente, die jedoch nicht in jedem Tessellationsmodus sinnvoll sind.

Hinweis: Hiermit wird der globale OpenGL-Zustandswert zurückgegeben. Er ist nicht spezifisch für diese „ QOpenGLShaderProgram “-Instanz.

Hinweis: Diese Funktion wird nur ab OpenGL 4.0 unterstützt und liefert unter OpenGL ES 3.2 keine gültigen Ergebnisse.

Siehe auch „ setDefaultInnerTessellationLevels()“ und „ defaultOuterTessellationLevels()“.

QList<float> QOpenGLShaderProgram::defaultOuterTessellationLevels() const

Gibt die Standardwerte für die äußeren Tessellationsstufen zurück, die vom Tessellationsprimitivgenerator verwendet werden sollen, falls der Tessellationssteuerungs-Shader diese nicht ausgibt. Weitere Informationen zu OpenGL und Tessellations-Shadern finden Sie unter „OpenGL-Tessellations-Shader“.

Gibt einen „ QList “ vom Typ „float“ zurück, der die äußeren Tessellationsstufen beschreibt. Der Vektor enthält immer vier Elemente, die jedoch nicht alle für jeden Tessellationsmodus aussagekräftig sind.

Hinweis: Hiermit wird der globale OpenGL-Statuswert zurückgegeben. Er ist nicht spezifisch für diese „ QOpenGLShaderProgram “-Instanz.

Hinweis: Diese Funktion wird nur von OpenGL >= 4.0 unterstützt und liefert unter OpenGL ES 3.2 keine gültigen Ergebnisse.

Siehe auch ` setDefaultOuterTessellationLevels()` und ` defaultInnerTessellationLevels()`.

void QOpenGLShaderProgram::disableAttributeArray(int location)

Deaktiviert das Vertex-Array unter „ location “ in diesem Shader-Programm, das durch einen vorherigen Aufruf von „ enableAttributeArray()“ aktiviert wurde.

Siehe auch „ enableAttributeArray()“, „ setAttributeArray()“, „ setAttributeValue()“ und „ setUniformValue()“.

void QOpenGLShaderProgram::disableAttributeArray(const char *name)

Deaktiviert das in diesem Shader-Programm als „ name “ bezeichnete Vertex-Array, das durch einen vorherigen Aufruf von „ enableAttributeArray()“ aktiviert wurde.

Dies ist eine überladene Funktion.

Siehe auch „ enableAttributeArray()“, „ setAttributeArray()“, „ setAttributeValue()“ und „ setUniformValue()“.

void QOpenGLShaderProgram::enableAttributeArray(int location)

Aktiviert das Vertex-Array unter location in diesem Shader-Programm, sodass der von setAttributeArray() unter location festgelegte Wert vom Shader-Programm verwendet wird.

Siehe auch disableAttributeArray(), setAttributeArray(), setAttributeValue() und setUniformValue().

void QOpenGLShaderProgram::enableAttributeArray(const char *name)

Aktiviert das in diesem Shader-Programm als „ name “ bezeichnete Vertex-Array, sodass der von „ setAttributeArray()“ auf „ name “ festgelegte Wert vom Shader-Programm verwendet wird.

Dies ist eine überladene Funktion.

Siehe auch disableAttributeArray(), setAttributeArray(), setAttributeValue() und setUniformValue().

[static] bool QOpenGLShaderProgram::hasOpenGLShaderPrograms(QOpenGLContext *context = nullptr)

Gibt „ true “ zurück, wenn Shader-Programme, die in der OpenGL Shading Language (GLSL) geschrieben sind, 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 QOpenGLShaderProgram::isLinked() const

Gibt „ true “ zurück, wenn dieses Shader-Programm eingebunden wurde; andernfalls „false“.

Siehe auch link().

Verbindet die Shader, die diesem Programm mit „ addShader()“ hinzugefügt wurden. Gibt „ true “ zurück, wenn die Verknüpfung erfolgreich war, andernfalls „false“. Wenn die Verknüpfung fehlgeschlagen ist, können die Fehlermeldungen mit „ log()“ abgerufen werden.

Unterklassen können diese Funktion überschreiben, um Attribute und Uniform-Variablen für die Verwendung in bestimmten Shader-Programmen zu initialisieren.

Wurde das Shader-Programm bereits verknüpft, führt ein erneuter Aufruf dieser Funktion dazu, dass es erneut verknüpft wird.

Wenn Shader über ` addCacheableShaderFromSourceCode()` oder ` addCacheableShaderFromSourceFile()` zu diesem Programm hinzugefügt wurden, werden Programm-Binärdateien unterstützt, und sofern eine zwischengespeicherte Binärdatei auf der Festplatte verfügbar ist, werden die eigentliche Kompilierung und das Verknüpfen übersprungen. Stattdessen initialisiert `link()` das Programm mit dem Binär-Blob über `glProgramBinary()`. Wenn keine zwischengespeicherte Version des Programms vorhanden ist oder diese mit einer anderen Treiberversion generiert wurde, werden die Shader aus dem Quellcode kompiliert und das Programm wird normal verknüpft. Dies ermöglicht ein nahtloses Upgrade der Grafiktreiber, ohne dass man sich um potenziell inkompatible Binärformate sorgen muss.

Siehe auch addShader() und log().

QString QOpenGLShaderProgram::log() const

Gibt die Fehler und Warnungen zurück, die beim letzten Aufruf von ` link()` oder ` addShader()` aufgetreten sind, zusammen mit dem explizit angegebenen Quellcode.

Siehe auch ` link()`.

int QOpenGLShaderProgram::maxGeometryOutputVertices() const

Gibt die hardwarebedingte Obergrenze für die Anzahl der Scheitelpunkte zurück, die ein Geometrie-Shader ausgeben kann.

int QOpenGLShaderProgram::patchVertexCount() const

Gibt die Anzahl der Scheitelpunkte pro Patch zurück, die beim Rendern verwendet werden sollen.

Hinweis: Hiermit wird der globale OpenGL-Statuswert zurückgegeben. Er ist nicht spezifisch für diese „ QOpenGLShaderProgram “-Instanz.

Siehe auch ` setPatchVertexCount()`.

GLuint QOpenGLShaderProgram::programId() const

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

Siehe auch „ QOpenGLShader::shaderId()“.

void QOpenGLShaderProgram::release()

Gibt das aktive Shader-Programm aus dem aktuellen „ QOpenGLContext “ frei. Dies entspricht dem Aufruf von „ glUseProgram(0) “.

Siehe auch bind().

void QOpenGLShaderProgram::removeAllShaders()

Entfernt alle Shader, die zuvor zu diesem Programm hinzugefügt wurden. Die „ QOpenGLShader “-Objekte für die Shader werden nicht gelöscht, wenn sie extern erstellt wurden. „ QOpenGLShader “-Objekte, die intern von „ QOpenGLShaderProgram “ erstellt wurden, werden gelöscht.

Siehe auch addShader() und removeShader().

void QOpenGLShaderProgram::removeShader(QOpenGLShader *shader)

Entfernt „ shader “ aus diesem Shader-Programm. Das Objekt wird nicht gelöscht.

Das Shader-Programm muss im aktuellen „ QOpenGLContext “ gültig sein.

Siehe auch „ addShader()“, „ link()“ und „ removeAllShaders()“.

void QOpenGLShaderProgram::setAttributeArray(int location, const QVector2D *values, int stride = 0)

Legt ein Array mit 2D-Vertex- values n für das Attribut unter location in diesem Shader-Programm fest. Der Wert „ stride “ gibt die Anzahl der Bytes zwischen den Vertices an. Ein Standardwert von Null für „ stride “ bedeutet, dass die Vertices dicht gepackt sind ( values).

Das Array wird aktiv, wenn „ enableAttributeArray()“ für das Attribut „ location “ aufgerufen wird. Andernfalls wird der mit „ setAttributeValue()“ für „ location “ angegebene Wert verwendet.

Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray() und disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(int location, const QVector3D *values, int stride = 0)

Legt ein Array mit 3D-Vertex- values n für das Attribut unter location in diesem Shader-Programm fest. Der Wert „ stride “ gibt die Anzahl der Bytes zwischen den Vertexen an. Ein Standardwert von Null für „ stride “ bedeutet, dass die Vertexe dicht gepackt sind ( values).

Das Array wird aktiv, wenn enableAttributeArray() für das location aufgerufen wird. Andernfalls wird der mit setAttributeValue() für location angegebene Wert verwendet.

Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray() und disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(int location, const QVector4D *values, int stride = 0)

Legt ein Array mit 4D-Vertex- values n für das Attribut unter location in diesem Shader-Programm fest. Der Wert „ stride “ gibt die Anzahl der Bytes zwischen den Vertexen an. Ein Standardwert von Null für „ stride “ bedeutet, dass die Vertexe in values dicht gepackt sind.

Das Array wird aktiv, wenn enableAttributeArray() auf das location aufgerufen wird. Andernfalls wird der mit setAttributeValue() für location angegebene Wert verwendet.

Siehe auch ` setAttributeValue()`, ` setUniformValue()`, ` enableAttributeArray()` und ` disableAttributeArray()`.

void QOpenGLShaderProgram::setAttributeArray(int location, const GLfloat *values, int tupleSize, int stride = 0)

Legt ein Array von Scheitelpunkt- values n für das Attribut unter location in diesem Shader-Programm fest. Die tupleSize gibt die Anzahl der Komponenten pro Scheitelpunkt an (1, 2, 3 oder 4), und die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Ein Standardwert von Null für stride bedeutet, dass die Scheitelpunkte dicht gepackt sind ( values).

Das Array wird aktiv, wenn „ enableAttributeArray()“ auf „ location “ aufgerufen wird. Andernfalls wird der mit „ setAttributeValue()“ für „ location “ angegebene Wert verwendet.

Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray() und disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(int location, GLenum type, const void *values, int tupleSize, int stride = 0)

Legt ein Array mit Scheitelpunkt values en für das Attribut unter location in diesem Shader-Programm fest. Der Wert „ stride “ gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Ein Standardwert von Null für „ stride “ bedeutet, dass die Scheitelpunkte in values dicht gepackt sind.

Das „ type “ gibt den Typ der Elemente im Array „ values “ an, üblicherweise „ GL_FLOAT “, „ GL_UNSIGNED_BYTE “ usw. Das „ tupleSize “ gibt die Anzahl der Komponenten pro Scheitelpunkt an: 1, 2, 3 oder 4.

Das Array wird aktiv, wenn ` enableAttributeArray()` für ` location` aufgerufen wird. Andernfalls wird der mit ` setAttributeValue()` für ` location ` angegebene Wert verwendet.

Die Funktion ` setAttributeBuffer()` kann verwendet werden, um das Attribut-Array auf einen Offset innerhalb eines Vertex-Puffers zu setzen.

Hinweis: Die Normalisierung wird aktiviert. Ist dies nicht gewünscht, rufen Sie glVertexAttribPointer direkt über QOpenGLFunctions auf.

Siehe auch „ setAttributeValue()“, „ setUniformValue()“, „ enableAttributeArray()“, „ disableAttributeArray()“ und „ setAttributeBuffer()“.

void QOpenGLShaderProgram::setAttributeArray(const char *name, const QVector2D *values, int stride = 0)

Legt ein Array mit 2D-Vertex- values n für das Attribut „ name “ in diesem Shader-Programm fest. Der Wert „ stride “ gibt die Anzahl der Bytes zwischen den Vertexen an. Ein Standardwert von Null für „ stride “ bedeutet, dass die Vertexe in „ values “ dicht gepackt sind.

Das Array wird aktiv, wenn „ enableAttributeArray()“ für „ name “ aufgerufen wird. Andernfalls wird der mit „ setAttributeValue()“ für „ name “ angegebene Wert verwendet.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray() und disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(const char *name, const QVector3D *values, int stride = 0)

Legt ein Array mit 3D-Vertex- values n im Attribut „ name “ dieses Shader-Programms fest. Der Wert „ stride “ gibt die Anzahl der Bytes zwischen den Vertexen an. Ein Standardwert von Null für „ stride “ bedeutet, dass die Vertexe in „ values “ dicht gepackt sind.

Das Array wird aktiv, wenn „ enableAttributeArray()“ für „ name “ aufgerufen wird. Andernfalls wird der mit „ setAttributeValue()“ für „ name “ angegebene Wert verwendet.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray() und disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(const char *name, const QVector4D *values, int stride = 0)

Legt ein Array mit 4D-Vertex- values n für das Attribut „ name “ in diesem Shader-Programm fest. Der Wert „ stride “ gibt die Anzahl der Bytes zwischen den Vertexen an. Ein Standardwert von Null für „ stride “ bedeutet, dass die Vertexe in „ values “ dicht gepackt sind.

Das Array wird aktiv, wenn „ enableAttributeArray()“ für „ name “ aufgerufen wird. Andernfalls wird der mit „ setAttributeValue()“ für „ name “ angegebene Wert verwendet.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray() und disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(const char *name, const GLfloat *values, int tupleSize, int stride = 0)

Legt ein Array mit Vertex- values en für das Attribut „ name “ in diesem Shader-Programm fest. Der Wert „ tupleSize “ gibt die Anzahl der Komponenten pro Vertex an (1, 2, 3 oder 4), und der Wert „ stride “ gibt die Anzahl der Bytes zwischen den Vertexen an. Ein Standardwert von Null für „ stride “ bedeutet, dass die Vertexe in „ values “ dicht gepackt sind.

Das Array wird aktiv, wenn „ enableAttributeArray()“ auf „ name “ aufgerufen wird. Andernfalls wird der mit „ setAttributeValue()“ für „ name “ angegebene Wert verwendet.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray() und disableAttributeArray().

void QOpenGLShaderProgram::setAttributeArray(const char *name, GLenum type, const void *values, int tupleSize, int stride = 0)

Legt ein Array mit Scheitelpunkt values en für das Attribut „ name “ in diesem Shader-Programm fest. Der Wert „ stride “ gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Ein Standardwert von Null für „ stride “ bedeutet, dass die Scheitelpunkte in „ values “ dicht gepackt sind.

„ type “ gibt den Typ der Elemente im Array „ values “ an, üblicherweise „ GL_FLOAT “, „ GL_UNSIGNED_BYTE “ usw. „ tupleSize “ gibt die Anzahl der Komponenten pro Scheitelpunkt an: 1, 2, 3 oder 4.

Das Array wird aktiv, wenn „ enableAttributeArray()“ für „ name “ aufgerufen wird. Andernfalls wird der mit „ setAttributeValue()“ für „ name “ angegebene Wert verwendet.

Mit der Funktion ` setAttributeBuffer()` kann das Attribut-Array auf einen Offset innerhalb eines Vertex-Puffers gesetzt werden.

Dies ist eine überladene Funktion.

Siehe auch „ setAttributeValue()“, „ setUniformValue()“, „ enableAttributeArray()“, „ disableAttributeArray()“ und „ setAttributeBuffer()“.

void QOpenGLShaderProgram::setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride = 0)

Legt ein Array von Scheitelpunktwerten für das Attribut unter location in diesem Shader-Programm fest, beginnend bei einem bestimmten offset im aktuell gebundenen Scheitelpunktpuffer. Der stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Ein Standardwert von Null für stride bedeutet, dass die Scheitelpunkte im Werte-Array dicht gepackt sind.

Der „ type “ gibt den Typ der Elemente im Vertex-Wert-Array an, üblicherweise „ GL_FLOAT “, „ GL_UNSIGNED_BYTE “ usw. Der „ tupleSize “ gibt die Anzahl der Komponenten pro Vertex an: 1, 2, 3 oder 4.

Das Array wird aktiv, wenn „ enableAttributeArray()“ für „ location “ aufgerufen wird. Andernfalls wird der mit „ setAttributeValue()“ für „ location “ angegebene Wert verwendet.

Hinweis: Die Normalisierung wird aktiviert. Wenn dies nicht gewünscht ist, rufen Sie `glVertexAttribPointer` direkt über ` QOpenGLFunctions` auf.

Siehe auch setAttributeArray().

void QOpenGLShaderProgram::setAttributeBuffer(const char *name, GLenum type, int offset, int tupleSize, int stride = 0)

Legt ein Array von Scheitelpunktwerten für das Attribut „ name “ in diesem Shader-Programm fest, beginnend an einer bestimmten „ offset “ im aktuell gebundenen Scheitelpunktpuffer. Der „ stride “ gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Ein Standardwert von Null für „ stride “ bedeutet, dass die Scheitelpunkte im Werte-Array dicht gepackt sind.

Der „ type “ gibt den Typ der Elemente im Vertex-Wert-Array an, üblicherweise „ GL_FLOAT “, „ GL_UNSIGNED_BYTE “ usw. Der „ tupleSize “ gibt die Anzahl der Komponenten pro Vertex an: 1, 2, 3 oder 4.

Das Array wird aktiv, wenn „ enableAttributeArray()“ für den „ name “ aufgerufen wird. Andernfalls wird der mit „ setAttributeValue()“ für „ name “ angegebene Wert verwendet.

Dies ist eine überladene Funktion.

Siehe auch setAttributeArray().

void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat value)

Setzt das Attribut „ location “ im aktuellen Kontext auf „ value “.

Siehe auch setUniformValue().

void QOpenGLShaderProgram::setAttributeValue(int location, const QColor &value)

Setzt das Attribut „ location “ im aktuellen Kontext auf „ value “.

Siehe auch setUniformValue().

void QOpenGLShaderProgram::setAttributeValue(int location, const QVector2D &value)

Setzt das Attribut „ location “ im aktuellen Kontext auf „ value “.

Siehe auch setUniformValue().

void QOpenGLShaderProgram::setAttributeValue(int location, const QVector3D &value)

Setzt das Attribut „ location “ im aktuellen Kontext auf „ value “.

Siehe auch setUniformValue().

void QOpenGLShaderProgram::setAttributeValue(int location, const QVector4D &value)

Setzt das Attribut „ location “ im aktuellen Kontext auf „ value “.

Siehe auch setUniformValue().

void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat x, GLfloat y)

Setzt das Attribut unter location im aktuellen Kontext auf den 2D-Vektor (x, y).

Siehe auch setUniformValue().

void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z)

Setzt das Attribut „ location “ im aktuellen Kontext auf den 3D-Vektor (x, y, z).

Siehe auch setUniformValue().

void QOpenGLShaderProgram::setAttributeValue(int location, const GLfloat *values, int columns, int rows)

Setzt das Attribut unter location im aktuellen Kontext auf den Inhalt von values, das columns -Elemente enthält, die jeweils aus rows -Elementen bestehen. Der Wert von rows sollte 1, 2, 3 oder 4 sein. Diese Funktion wird in der Regel zum Festlegen von Matrixwerten und Spaltenvektoren verwendet.

Siehe auch „ setUniformValue()“.

void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

Setzt das Attribut „ location “ im aktuellen Kontext auf den 4D-Vektor (x, y, z, w).

Siehe auch ` setUniformValue()`.

void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat value)

Setzt das Attribut „ name “ im aktuellen Kontext auf „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setUniformValue()“.

void QOpenGLShaderProgram::setAttributeValue(const char *name, const QColor &value)

Setzt das Attribut „ name “ im aktuellen Kontext auf „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setUniformValue()“.

void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector2D &value)

Setzt das Attribut „ name “ im aktuellen Kontext auf „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setUniformValue()“.

void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector3D &value)

Setzt das Attribut „ name “ im aktuellen Kontext auf „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setUniformValue()“.

void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector4D &value)

Setzt das Attribut „ name “ im aktuellen Kontext auf „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setUniformValue()“.

void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat x, GLfloat y)

Setzt das Attribut „ name “ im aktuellen Kontext auf den 2D-Vektor (x, y).

Dies ist eine überladene Funktion.

Siehe auch „ setUniformValue()“.

void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z)

Setzt das Attribut „ name “ im aktuellen Kontext auf den 3D-Vektor (x, y, z).

Dies ist eine überladene Funktion.

Siehe auch „ setUniformValue()“.

void QOpenGLShaderProgram::setAttributeValue(const char *name, const GLfloat *values, int columns, int rows)

Setzt das Attribut „ name “ im aktuellen Kontext auf den Inhalt von „ values “, das „ columns “-Elemente enthält, die jeweils aus „ rows “-Elementen bestehen. Der Wert von „ rows “ sollte 1, 2, 3 oder 4 sein. Diese Funktion wird typischerweise zum Setzen von Matrixwerten und Spaltenvektoren verwendet.

Dies ist eine überladene Funktion.

Siehe auch „ setUniformValue()“.

void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

Setzt das Attribut „ name “ im aktuellen Kontext auf den 4D-Vektor (x, y, z, w).

Dies ist eine überladene Funktion.

Siehe auch setUniformValue().

void QOpenGLShaderProgram::setDefaultInnerTessellationLevels(const QList<float> &levels)

Legt die Standardwerte für die äußeren Tessellationsstufen fest, die vom Tessellationsprimitivgenerator verwendet werden sollen, falls der Tessellationssteuerungs-Shader diese nicht an „ levels “ ausgibt. Weitere Informationen zu OpenGL und Tessellations-Shadern finden Sie unter „OpenGL-Tessellations-Shader“.

Das Argument „ levels “ sollte ein „ QList “ sein, der aus 2 Floats besteht. Nicht alle Werte sind für alle Tessellationsmodi sinnvoll. Wenn Sie einen Vektor mit weniger als 2 Elementen angeben, erhalten die verbleibenden Elemente den Standardwert 1.

Hinweis: Dies ändert den globalen OpenGL-Status und ist nicht spezifisch für diese „ QOpenGLShaderProgram “-Instanz. Sie sollten diese Funktion bei Bedarf in Ihrer Render-Funktion aufrufen, da „ QOpenGLShaderProgram “ dies nicht automatisch für Sie übernimmt. Es handelt sich hierbei um eine reine Komfortfunktion.

Hinweis: Diese Funktion ist nur mit OpenGL >= 4.0 verfügbar und wird von OpenGL ES 3.2 nicht unterstützt.

Siehe auch defaultInnerTessellationLevels() und setDefaultOuterTessellationLevels().

void QOpenGLShaderProgram::setDefaultOuterTessellationLevels(const QList<float> &levels)

Legt die Standardwerte für die äußeren Tessellationsstufen fest, die vom Tessellationsprimitivgenerator verwendet werden sollen, falls der Tessellationssteuerungs-Shader diese nicht an „ levels “ ausgibt. Weitere Informationen zu OpenGL und Tessellations-Shadern finden Sie unter „OpenGL-Tessellations-Shader“.

Das Argument „ levels “ sollte ein „ QList “ sein, der aus 4 Floats besteht. Nicht alle Werte sind für alle Tessellationsmodi sinnvoll. Wenn Sie einen Vektor mit weniger als 4 Elementen angeben, erhalten die verbleibenden Elemente den Standardwert 1.

Hinweis: Dies ändert den globalen OpenGL-Status und ist nicht spezifisch für diese „ QOpenGLShaderProgram “-Instanz. Sie sollten diese Funktion bei Bedarf in Ihrer Render-Funktion aufrufen, da „ QOpenGLShaderProgram “ dies nicht automatisch für Sie übernimmt. Es handelt sich hierbei um eine reine Komfortfunktion.

Hinweis: Diese Funktion ist nur mit OpenGL >= 4.0 verfügbar und wird von OpenGL ES 3.2 nicht unterstützt.

Siehe auch defaultOuterTessellationLevels() und setDefaultInnerTessellationLevels().

void QOpenGLShaderProgram::setPatchVertexCount(int count)

Verwenden Sie diese Funktion, um OpenGL die Anzahl der Scheitelpunkte in einem Patch für „ count “ anzugeben. Ein Patch ist eine benutzerdefinierte OpenGL-Primitiv, deren Interpretation vollständig durch die Tessellations-Shader-Stufen definiert wird. Daher ist der Aufruf dieser Funktion nur sinnvoll, wenn ein „ QOpenGLShaderProgram “ verwendet wird, das Tessellations-Shader enthält. Bei Verwendung der OpenGL-Tessellation ist „ GL_PATCHES “ die einzige Primitiv, die mit den „ glDraw*() “-Funktionen gerendert werden kann.

Dies entspricht dem Aufruf von `glPatchParameteri(GL_PATCH_VERTICES, count)`.

Hinweis: Dies verändert den globalen OpenGL-Status und ist nicht spezifisch für diese „ QOpenGLShaderProgram “-Instanz. Sie sollten diese Funktion bei Bedarf in Ihrer Render-Funktion aufrufen, da „ QOpenGLShaderProgram “ dies nicht automatisch für Sie übernimmt. Es handelt sich hierbei um eine reine Komfortfunktion.

Siehe auch ` patchVertexCount()`.

void QOpenGLShaderProgram::setUniformValue(int location, GLfloat value)

Setzt die Variable „ location “ im aktuellen Kontext auf „ value “.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, GLint value)

Setzt die Variable „ location “ im aktuellen Kontext auf „ value “.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x4 &value)

Setzt die im aktuellen Kontext vorhandene Uniform-Variable „ name “ auf die 3×4-Matrix „ value “.

Hinweis: Diese Funktion unterstützt keine nicht-quadratischen Matrizen, d. h. GLSL-Typen wie `mat3x4`, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die Uniform-Variable als ein Array vom Typ `vec4`.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x2 &value)

Setzt die im aktuellen Kontext vorhandene Uniform-Variable „ name “ auf die 4×2-Matrix „ value “.

Hinweis: Diese Funktion unterstützt keine nicht-quadratischen Matrizen, d. h. GLSL-Typen wie `mat4x2`, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die Uniform-Variable als ein Array von `vec2`.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x3 &value)

Setzt die im aktuellen Kontext vorhandene Uniform-Variable „ name “ auf die 4×3-Matrix „ value “.

Hinweis: Diese Funktion unterstützt keine nicht-quadratischen Matrizen, d. h. GLSL-Typen wie „mat4x3“, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die „uniform“-Variable als ein Array von „vec3“.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x4 &value)

Setzt die im aktuellen Kontext vorhandene einheitliche Variable „ name “ auf die 4×4-Matrix „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QPoint &point)

Setzt die mit „ name “ im aktuellen Kontext verbundene einheitliche Variable auf die x- und y-Koordinaten von „ point “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(const char *name, const QPointF &point)

Setzt die mit „ name “ im aktuellen Kontext verbundene einheitliche Variable auf die x- und y-Koordinaten von „ point “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(const char *name, const QSize &size)

Setzt die mit „ name “ im aktuellen Kontext verbundene „uniform“-Variable auf die Breite und Höhe der angegebenen „ size “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(const char *name, const QSizeF &size)

Setzt die mit „ name “ im aktuellen Kontext verbundene „uniform“-Variable auf die Breite und Höhe des angegebenen „ size “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(const char *name, const QTransform &value)

Setzt die im aktuellen Kontext vorhandene Variable „ name “ auf eine 3x3-Transformationsmatrix „ value “, die als Wert von „ QTransform “ angegeben wird.

Um einen „ QTransform “-Wert als 4x4-Matrix in einem Shader festzulegen, verwenden Sie „ setUniformValue(name, QMatrix4x4(value)) “.

Dies ist eine überladene Funktion.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector2D &value)

Setzt die einheitliche Variable „ name “ im aktuellen Kontext auf „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector3D &value)

Setzt die einheitliche Variable „ name “ im aktuellen Kontext auf „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector4D &value)

Setzt die einheitliche Variable „ name “ im aktuellen Kontext auf „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat[2][2] value)

Setzt die einheitliche Variable „ location “ im aktuellen Kontext auf die 2×2-Matrix „ value “. Die Matrixelemente müssen in spaltenorientierter Reihenfolge angegeben werden.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat[3][3] value)

Setzt die einheitliche Variable „ location “ im aktuellen Kontext auf die 3×3-Matrix „ value “. Die Matrixelemente müssen in spaltenorientierter Reihenfolge angegeben werden.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()` .

void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat[4][4] value)

Setzt die einheitliche Variable „ location “ im aktuellen Kontext auf eine 4×4-Matrix „ value “. Die Matrixelemente müssen in spaltenorientierter Reihenfolge angegeben werden.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat x, GLfloat y)

Setzt die im aktuellen Kontext vorhandene einheitliche Variable „ name “ auf den 2D-Vektor (x, y).

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z)

Setzt die im aktuellen Kontext vorhandene einheitliche Variable „ name “ auf den 3D-Vektor (x, y, z).

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

Setzt die im aktuellen Kontext vorhandene einheitliche Variable „ name “ auf den 4D-Vektor (x, y, z, w).

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, GLuint value)

Setzt die Uniform-Variable „ location “ im aktuellen Kontext auf „ value “. Diese Funktion sollte beim Festlegen von Sampler-Werten verwendet werden.

Hinweis: Diese Funktion berücksichtigt die Unterstützung für „unsigned int“ in modernen OpenGL-Versionen nicht und behandelt „ value “ daher als „GLint“ und ruft „glUniform1i“ auf.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, const QColor &color)

Setzt die Variable „uniform“ unter location im aktuellen Kontext auf die Rot-, Grün-, Blau- und Alpha-Komponenten von color.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x2 &value)

Setzt die einheitliche Variable „ location “ im aktuellen Kontext auf die 2×2-Matrix „ value “.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x3 &value)

Setzt die Uniform-Variable „ location “ im aktuellen Kontext auf die 2×3-Matrix „ value “.

Hinweis: Diese Funktion unterstützt keine nicht-quadratischen Matrizen, d. h. GLSL-Typen wie `mat2x3`, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die Uniform-Variable als ein Array von `vec3`.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x4 &value)

Setzt die Uniform-Variable „ location “ im aktuellen Kontext auf eine 2x4-Matrix „ value “.

Hinweis: Diese Funktion unterstützt keine nicht-quadratischen Matrizen, d. h. GLSL-Typen wie `mat2x4`, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die Uniform-Variable als ein Array vom Typ `vec4`.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x2 &value)

Setzt die Variable „ location “ im aktuellen Kontext auf die 3×2-Matrix „ value “.

Hinweis: Diese Funktion unterstützt keine nicht-quadratischen Matrizen, d. h. GLSL-Typen wie `mat3x2`, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die „uniform“-Variable als ein Array von `vec2`.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x3 &value)

Setzt die einheitliche Variable unter location im aktuellen Kontext auf die 3×3-Matrix value.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x4 &value)

Setzt die Uniform-Variable „ location “ im aktuellen Kontext auf die 3×4-Matrix „ value “.

Hinweis: Diese Funktion unterstützt keine nicht-quadratischen Matrizen, d. h. GLSL-Typen wie „mat3x4“, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die „uniform“-Variable als ein Array vom Typ „vec4“.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x2 &value)

Setzt die Uniform-Variable „ location “ im aktuellen Kontext auf eine 4x2-Matrix „ value “.

Hinweis: Diese Funktion unterstützt keine nicht-quadratischen Matrizen, d. h. GLSL-Typen wie `mat4x2`, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die „uniform“-Variable als ein Array von `vec2`.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x3 &value)

Setzt die Uniform-Variable „ location “ im aktuellen Kontext auf die 4×3-Matrix „ value “.

Hinweis: Diese Funktion berücksichtigt keine Unterstützung für nicht-quadratische Matrizen, d. h. GLSL-Typen wie `mat4x3`, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die „uniform“-Variable als Array vom Typ `vec3`.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x4 &value)

Setzt die einheitliche Variable „ location “ im aktuellen Kontext auf die 4×4-Matrix „ value “.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, const QPoint &point)

Setzt die einheitliche Variable unter location im aktuellen Kontext auf die x- und y-Koordinaten von point.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValue(int location, const QPointF &point)

Setzt die einheitliche Variable unter location im aktuellen Kontext auf die x- und y-Koordinaten von point.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, const QSize &size)

Setzt die Variable „uniform“ unter location im aktuellen Kontext auf die Breite und Höhe der angegebenen URL size.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, const QSizeF &size)

Setzt die Variable „uniform“ unter location im aktuellen Kontext auf die Breite und Höhe der angegebenen URL size.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, const QTransform &value)

Setzt die Variable „ location “ im aktuellen Kontext auf eine 3x3-Transformationsmatrix „ value “, die als Wert von „ QTransform “ angegeben wird.

Um einen „ QTransform “-Wert als 4x4-Matrix in einem Shader festzulegen, verwenden Sie „ setUniformValue(location, QMatrix4x4(value)) “.

void QOpenGLShaderProgram::setUniformValue(int location, const QVector2D &value)

Setzt die Variable „ location “ im aktuellen Kontext auf „ value “.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, const QVector3D &value)

Setzt die Variable „ location “ im aktuellen Kontext auf „ value “.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, const QVector4D &value)

Setzt die Variable „ location “ im aktuellen Kontext auf „ value “.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(int location, GLfloat x, GLfloat y)

Setzt die Variable „ location “ im aktuellen Kontext auf den 2D-Vektor (x, y).

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z)

Setzt die einheitliche Variable unter location im aktuellen Kontext auf den 3D-Vektor (x, y, z).

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)

Setzt die Variable „ location “ im aktuellen Kontext auf den 4D-Vektor (x, y, z, w).

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat value)

Setzt die einheitliche Variable „ name “ im aktuellen Kontext auf „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValue(const char *name, GLint value)

Setzt die einheitliche Variable „ name “ im aktuellen Kontext auf „ value “.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, GLuint value)

Setzt die Uniform-Variable „ name “ im aktuellen Kontext auf „ value “. Diese Funktion sollte beim Festlegen von Sampler-Werten verwendet werden.

Hinweis: Diese Funktion berücksichtigt nicht die Unterstützung für „unsigned int“ in modernen OpenGL-Versionen und behandelt „ value “ daher als „GLint“ und ruft „glUniform1i“ auf.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat[2][2] value)

Setzt die einheitliche Variable „ name “ im aktuellen Kontext auf die 2×2-Matrix „ value “. Die Matrixelemente müssen in spaltenorientierter Reihenfolge angegeben werden.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat[3][3] value)

Setzt die einheitliche Variable „ name “ im aktuellen Kontext auf die 3×3-Matrix „ value “. Die Matrixelemente müssen in spaltenorientierter Reihenfolge angegeben werden.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat[4][4] value)

Setzt die im aktuellen Kontext definierte einheitliche Variable „ name “ auf die 4×4-Matrix „ value “. Die Matrixelemente müssen in spaltenorientierter Reihenfolge angegeben werden.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QColor &color)

Setzt die einheitliche Variable „ name “ im aktuellen Kontext auf die Rot-, Grün-, Blau- und Alpha-Komponenten von „ color “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x2 &value)

Setzt die im aktuellen Kontext vorhandene einheitliche Variable „ name “ auf die 2×2-Matrix „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x3 &value)

Setzt die im aktuellen Kontext vorhandene Uniform-Variable „ name “ auf die 2×3-Matrix „ value “.

Hinweis: Diese Funktion unterstützt keine nicht-quadratischen Matrizen, d. h. GLSL-Typen wie „mat2x3“, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die „uniform“-Variable als ein Array vom Typ „vec3“.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x4 &value)

Setzt die im aktuellen Kontext vorhandene Uniform-Variable „ name “ auf die 2×4-Matrix „ value “.

Hinweis: Diese Funktion berücksichtigt keine Unterstützung für nicht-quadratische Matrizen, d. h. GLSL-Typen wie `mat2x4`, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die Uniform-Variable als ein Array vom Typ `vec4`.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x2 &value)

Setzt die im aktuellen Kontext vorhandene Uniform-Variable „ name “ auf die 3×2-Matrix „ value “.

Hinweis: Diese Funktion unterstützt keine nicht-quadratischen Matrizen, d. h. GLSL-Typen wie „mat3x2“, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die „uniform“-Variable als ein Array vom Typ „vec2“.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x3 &value)

Setzt die im aktuellen Kontext vorhandene einheitliche Variable „ name “ auf die 3×3-Matrix „ value “.

Dies ist eine überladene Funktion.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValueArray(int location, const GLint *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count Elemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const GLuint *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count Elemente von values. Diese Überladung sollte beim Setzen eines Arrays von Sampler-Werten verwendet werden.

Hinweis: Diese Funktion berücksichtigt die Unterstützung für „unsigned int“ in modernen OpenGL-Versionen nicht und behandelt daher „ values “ als „GLint“ und ruft „glUniform1iv“ auf.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x2 *values, int count)

Setzt das Array „uniform“ unter location im aktuellen Kontext auf die 2×2-Matrixelemente von „ count “ aus „ values “.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x3 *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 2×3-Matrixelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x4 *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 2x4-Matrixelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x2 *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 3×2-Matrixelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x3 *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 3×3-Matrixelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x4 *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 3×4-Matrixelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x2 *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 4×2-Matrixelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x3 *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 4×3-Matrixelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x4 *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 4×4-Matrixelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QVector2D *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 2D-Vektorelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QVector3D *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 3D-Vektorelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const QVector4D *values, int count)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count 4D-Vektorelemente von values.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(int location, const GLfloat *values, int count, int tupleSize)

Setzt das Array der einheitlichen Variablen unter location im aktuellen Kontext auf die count Elemente von values. Jedes Element hat tupleSize Komponenten. Die tupleSize muss 1, 2, 3 oder 4 sein.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const GLint *values, int count)

Setzt das im aktuellen Kontext befindliche Array der einheitlichen Variablen namens „ name “ auf die Elemente „ count “ von „ values “.

Dies ist eine überladene Funktion.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const GLuint *values, int count)

Setzt das im aktuellen Kontext befindliche einheitliche Variablen-Array namens „ name “ auf die Elemente „ count “ von „ values “. Diese Überladung sollte verwendet werden, wenn ein Array von Sampler-Werten gesetzt werden soll.

Dies ist eine überladene Funktion.

Siehe auch „ setAttributeValue()“.

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x2 *values, int count)

Setzt das im aktuellen Kontext vorhandene Array mit einheitlichen Variablen namens „ name “ auf die count 2×2-Matrixelemente von „ values “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x3 *values, int count)

Setzt das im aktuellen Kontext vorhandene Array mit einheitlichen Variablen namens „ name “ auf die count 2×3-Matrixelemente von „ values “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x4 *values, int count)

Setzt das im aktuellen Kontext vorhandene Array mit einheitlichen Variablen namens „ name “ auf die count 2×4-Matrixelemente von „ values “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x2 *values, int count)

Setzt das im aktuellen Kontext befindliche Array mit einheitlichen Variablen namens „ name “ auf die 3×2-Matrixelemente von „ values “ mit den Werten „ count “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x3 *values, int count)

Setzt das im aktuellen Kontext vorhandene Array mit einheitlichen Variablen namens „ name “ auf die 3×3-Matrixelemente „ count “ von „ values “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x4 *values, int count)

Setzt das im aktuellen Kontext befindliche Array mit einheitlichen Variablen namens „ name “ auf die count 3×4-Matrixelemente von „ values “ zurück.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x2 *values, int count)

Setzt das im aktuellen Kontext befindliche Array „ name “ mit einheitlichen Variablen auf die 4×2-Matrixelemente „ count “ von „ values “ zurück.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x3 *values, int count)

Setzt das im aktuellen Kontext befindliche Array mit dem Namen „ name “ auf die 4×3-Matrixelemente von „ values “ mit den Werten „ count “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x4 *values, int count)

Setzt das im aktuellen Kontext vorhandene Array mit einheitlichen Variablen namens „ name “ auf die count 4×4-Matrixelemente von „ values “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector2D *values, int count)

Setzt das im aktuellen Kontext befindliche einheitliche Variablenarray namens „ name “ auf die 2D-Vektorelemente „ count “ von „ values “.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector3D *values, int count)

Setzt das im aktuellen Kontext befindliche Array der einheitlichen Variablen „ name “ auf die 3D-Vektorelemente „ count “ von „ values “ zurück.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector4D *values, int count)

Setzt das im aktuellen Kontext befindliche einheitliche Variablenarray „ name “ auf die count 4D-Vektorelemente von „ values “.

Dies ist eine überladene Funktion.

Siehe auch ` setAttributeValue()`.

void QOpenGLShaderProgram::setUniformValueArray(const char *name, const GLfloat *values, int count, int tupleSize)

Setzt das im aktuellen Kontext befindliche einheitliche Variablenarray namens „ name “ auf die Elemente „ count “ von „ values “ zurück. Jedes Element besteht aus den Komponenten „ tupleSize “. „ tupleSize “ muss 1, 2, 3 oder 4 sein.

Dies ist eine überladene Funktion.

Siehe auch setAttributeValue().

QList<QOpenGLShader *> QOpenGLShaderProgram::shaders() const

Gibt eine Liste aller Shader zurück, die diesem Shader-Programm mithilfe von ` addShader()` hinzugefügt wurden.

Siehe auch „ addShader()“ und „ removeShader()“.

int QOpenGLShaderProgram::uniformLocation(const char *name) const

Gibt die Position der Uniform-Variablen „ name “ innerhalb der Parameterliste dieses Shader-Programms zurück. Gibt -1 zurück, wenn „ name “ keine gültige Uniform-Variable für dieses Shader-Programm ist.

Siehe auch attributeLocation().

int QOpenGLShaderProgram::uniformLocation(const QByteArray &name) const

Gibt die Position der Uniform-Variablen „ name “ innerhalb der Parameterliste dieses Shader-Programms zurück. Gibt -1 zurück, wenn „ name “ keine gültige Uniform-Variable für dieses Shader-Programm ist.

Dies ist eine überladene Funktion.

Siehe auch attributeLocation().

int QOpenGLShaderProgram::uniformLocation(const QString &name) const

Gibt die Position der Uniform-Variablen „ name “ innerhalb der Parameterliste dieses Shader-Programms zurück. Gibt -1 zurück, wenn „ name “ keine gültige Uniform-Variable für dieses Shader-Programm ist.

Dies ist eine überladene Funktion.

Siehe auch ` attributeLocation()`.

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