QOpenGLShaderProgram Class
Die Klasse QOpenGLShaderProgram ermöglicht das Verknüpfen und Verwenden von OpenGL-Shader-Programmen. Mehr...
Kopfzeile: | #include <QOpenGLShaderProgram> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS OpenGL) target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
qmake: | QT += opengl |
Vererbt: | QObject |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QOpenGLShaderProgram ist Teil von Rendering in 3D.
Ö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 Typ, konst QString &Quelle) |
bool | addCacheableShaderFromSourceFile(QOpenGLShader::ShaderType Typ, konst. QString &Dateiname) |
bool | addShader(QOpenGLShader *shader) |
bool | addShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source) |
bool | addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source) |
bool | addShaderFromSourceCode(QOpenGLShader::ShaderType Typ, konst QString &Quelle) |
bool | addShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName) |
int | attributeLocation(const char *name) const |
int | attributeLocation(konst. QByteArray &name) konst. |
int | attributeLocation(const QString &name) const |
bool | bind() |
void | bindAttributeLocation(const char *name, int Standort) |
void | bindAttributeLocation(konst. QByteArray &name, int Standort) |
void | bindAttributeLocation(konst. QString &name, int Standort) |
bool | create() |
QList<float> | defaultInnerTessellationLevels() const |
QList<Float> | defaultOuterTessellationLevels() const |
void | disableAttributeArray(int Standort) |
void | disableAttributeArray(const char *name) |
void | enableAttributeArray(int Standort) |
void | enableAttributeArray(const char *name) |
bool | isLinked() const |
virtuell bool | link() |
QString | log() const |
int | maxGeometryOutputVertices() const |
int | patchVertexCount() konst |
GLuint | programId() const |
void | release() |
void | removeAllShaders() |
void | removeShader(QOpenGLShader *shader) |
void | setAttributeArray(int Standort, const QVector2D *values, int stride = 0) |
void | setAttributeArray(int Standort, konst. QVector3D *Werte, int stride = 0) |
void | setAttributeArray(int Ort, konst. QVector4D *Werte, int stride = 0) |
void | setAttributeArray(int Standort, const GLfloat *Werte, int tupleSize, int stride = 0) |
void | setAttributeArray(int Ort, GLenum Typ, const void *Werte, 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(konst. char *Name, konst. QVector4D *Werte, 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 Standort, GLfloat Wert) |
void | setAttributeValue(int Standort, const QColor &Wert) |
void | setAttributeValue(int Standort, konst QVector2D &Wert) |
void | setAttributeValue(int Standort, konst QVector3D &Wert) |
void | setAttributeValue(int Ort, konst. QVector4D &Wert) |
void | setAttributeValue(int Standort, GLfloat x, GLfloat y) |
void | setAttributeValue(int Standort, GLFloat x, GLFloat y, GLFloat z) |
void | setAttributeValue(int Standort, const GLfloat *Werte, int Spalten, int Zeilen) |
void | setAttributeValue(int Standort, GLFloat x, GLFloat y, GLFloat z, GLFloat w) |
void | setAttributeValue(const char *name, GLfloat Wert) |
void | setAttributeValue(const char *name, const QColor &wert) |
void | setAttributeValue(konst. char *Name, konst. QVector2D &Wert) |
void | setAttributeValue(konst. char *Name, konst. QVector3D &Wert) |
void | setAttributeValue(konst. char *Name, konst. QVector4D &Wert) |
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 Standort, GLfloat-Wert) |
void | setUniformValue(int Standort, GLint Wert) |
void | setUniformValue(const char *name, const QMatrix3x4 &wert) |
void | setUniformValue(const char *Name, const QMatrix4x2 &Wert) |
void | setUniformValue(konst. char *Name, konst. QMatrix4x3 &Wert) |
void | setUniformValue(const char *Name, const QMatrix4x4 &Wert) |
void | setUniformValue(konst. char *Name, konst. QPoint &Punkt) |
void | setUniformValue(konst. char *Name, konst. QPointF &Punkt) |
void | setUniformValue(const char *name, const QSize &size) |
void | setUniformValue(konst. char *Name, konst. QSizeF &size) |
void | setUniformValue(konst. char *Name, konst. QTransform &Wert) |
void | setUniformValue(konst. char *Name, konst. QVector2D &Wert) |
void | setUniformValue(konst. char *Name, konst. QVector3D &Wert) |
void | setUniformValue(konst. char *Name, konst. QVector4D &Wert) |
void | setUniformValue(int Standort, const GLfloat[2][2] Wert) |
void | setUniformValue(int Standort, const GLfloat[3][3] Wert) |
void | setUniformValue(int Standort, 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 Standort, GLuint Wert) |
void | setUniformValue(int Standort, const QColor &color) |
void | setUniformValue(int Standort, const QMatrix2x2 &wert) |
void | setUniformValue(int Standort, konst. QMatrix2x3 &Wert) |
void | setUniformValue(int Standort, konst. QMatrix2x4 &Wert) |
void | setUniformValue(int Standort, konst. QMatrix3x2 &Wert) |
void | setUniformValue(int Standort, konst. QMatrix3x3 &Wert) |
void | setUniformValue(int Standort, konst. QMatrix3x4 &Wert) |
void | setUniformValue(int Standort, konst. QMatrix4x2 &Wert) |
void | setUniformValue(int Standort, konst. QMatrix4x3 &Wert) |
void | setUniformValue(int Standort, konst. QMatrix4x4 &Wert) |
void | setUniformValue(int Standort, konst. QPoint &Punkt) |
void | setUniformValue(int Standort, konst. QPointF &Punkt) |
void | setUniformValue(int Standort, const QSize &size) |
void | setUniformValue(int Standort, const QSizeF &size) |
void | setUniformValue(int Ort, konst. QTransform &Wert) |
void | setUniformValue(int Ort, konst QVector2D &Wert) |
void | setUniformValue(int Ort, konst QVector3D &Wert) |
void | setUniformValue(int Ort, konst. QVector4D &Wert) |
void | setUniformValue(int Standort, GLfloat x, GLfloat y) |
void | setUniformValue(int Standort, GLFloat x, GLFloat y, GLFloat z) |
void | setUniformValue(int Standort, GLFloat x, GLFloat y, GLFloat z, GLFloat w) |
void | setUniformValue(const char *Name, GLfloat Wert) |
void | setUniformValue(const char *Name, GLint Wert) |
void | setUniformValue(const char *Name, GLuint-Wert) |
void | setUniformValue(const char *Name, const GLfloat[2][2] Wert) |
void | setUniformValue(const char *Name, const GLfloat[3][3] Wert) |
void | setUniformValue(konst. char *Name, konst. GLfloat[4][4] Wert) |
void | setUniformValue(const char *name, const QColor &color) |
void | setUniformValue(const char *name, const QMatrix2x2 &value) |
void | setUniformValue(konst. char *Name, konst. QMatrix2x3 &Wert) |
void | setUniformValue(konst. char *Name, konst. QMatrix2x4 &Wert) |
void | setUniformValue(konst. char *Name, konst. QMatrix3x2 &Wert) |
void | setUniformValue(konst. char *Name, konst. QMatrix3x3 &Wert) |
void | setUniformValueArray(int Standort, const GLint *Werte, int Anzahl) |
void | setUniformValueArray(int Standort, const GLuint *Werte, int count) |
void | setUniformValueArray(int Standort, const QMatrix2x2 *Werte, int count) |
void | setUniformValueArray(int location, const QMatrix2x3 *values, int count) |
void | setUniformValueArray(int Standort, konst. QMatrix2x4 *Werte, int Anzahl) |
void | setUniformValueArray(int Standort, konst. QMatrix3x2 *Werte, int count) |
void | setUniformValueArray(int Standort, konst. QMatrix3x3 *Werte, int count) |
void | setUniformValueArray(int Standort, konst. QMatrix3x4 *Werte, int count) |
void | setUniformValueArray(int Standort, konst. QMatrix4x2 *Werte, int count) |
void | setUniformValueArray(int Standort, konst. QMatrix4x3 *Werte, int count) |
void | setUniformValueArray(int Standort, konst. QMatrix4x4 *Werte, int count) |
void | setUniformValueArray(int Standort, konst. QVector2D *Werte, int Anzahl) |
void | setUniformValueArray(int Standort, konst. QVector3D *Werte, int Anzahl) |
void | setUniformValueArray(int Ort, konst. QVector4D *Werte, int Anzahl) |
void | setUniformValueArray(int Standort, const GLfloat *Werte, int count, int tupleSize) |
void | setUniformValueArray(const char *name, const GLint *values, int count) |
void | setUniformValueArray(konst. char *Name, konst. GLuint *Werte, int count) |
void | setUniformValueArray(const char *Name, const QMatrix2x2 *Werte, int count) |
void | setUniformValueArray(const char *Name, const QMatrix2x3 *Werte, int count) |
void | setUniformValueArray(const char *name, const QMatrix2x4 *Werte, int count) |
void | setUniformValueArray(const char *name, const QMatrix3x2 *Werte, int count) |
void | setUniformValueArray(const char *Name, const QMatrix3x3 *Werte, int count) |
void | setUniformValueArray(const char *Name, const QMatrix3x4 *Werte, int count) |
void | setUniformValueArray(const char *Name, const QMatrix4x2 *Werte, int count) |
void | setUniformValueArray(const char *name, const QMatrix4x3 *Werte, int count) |
void | setUniformValueArray(const char *Name, const QMatrix4x4 *Werte, int count) |
void | setUniformValueArray(const char *Name, const QVector2D *Werte, int count) |
void | setUniformValueArray(konst. char *Name, konst. QVector3D *Werte, int count) |
void | setUniformValueArray(konst. char *Name, konst. QVector4D *Werte, int count) |
void | setUniformValueArray(const char *Name, const GLfloat *Werte, int count, int tupleSize) |
QList<QOpenGLShader *> | shaders() const |
int | uniformLocation(const char *name) const |
int | uniformLocation(konst QByteArray &name) konst |
int | uniformLocation(const QString &name) const |
Statische öffentliche Mitglieder
bool | hasOpenGLShaderPrograms(QOpenGLContext *context = nullptr) |
Detaillierte 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 wurden.
QOpenGLShader QOpenGLShaderProgram und QOpenGLShaderProgram befreien den Programmierer von den Details des Kompilierens und Linkens von Vertex- und Fragment-Shadern.
Das folgende Beispiel erstellt ein Vertex-Shader-Programm unter Verwendung des mitgelieferten Quellcodes code
. Nach dem Kompilieren und Linken 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();
Schreiben von portablen Shadern
Die Wiederverwendung von Shader-Programmen in verschiedenen OpenGL-Implementierungen kann schwierig sein, da die Unterstützung für Standard-Vertex-Attribute und einheitliche Variablen unterschiedlich ausgeprägt ist. Insbesondere fehlen in GLSL/ES alle Standardvariablen, die in Desktop-OpenGL-Systemen vorhanden sind: gl_Vertex
, gl_Normal
, gl_Color
, und so weiter. Desktop OpenGL fehlen die Variablenqualifizierer highp
, mediump
und lowp
.
Die Klasse QOpenGLShaderProgram erleichtert das Schreiben portabler Shader, indem sie allen Shader-Programmen die folgenden Zeilen auf Desktop-OpenGL voranstellt:
#define highp #define mediump #define lowp
Dies macht es möglich, die meisten GLSL/ES-Shader-Programme auf Desktop-Systemen auszuführen. Der Programmierer sollte sich auf die in GLSL/ES vorhandenen Funktionen beschränken 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");
Mit dem obigen Shader-Programm können wir ein grünes Dreieck wie folgt 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 mit glShaderBinary()
über den Rückgabewert von QOpenGLShader::shaderId() angegeben werden. Die Instanz QOpenGLShader, die das Binärprogramm enthält, kann dann mit addShader() zum Shaderprogramm hinzugefügt und mit link() auf die übliche Weise gelinkt werden.
Binärprogramme können mit glProgramBinaryOES()
über den Rückgabewert von programId() spezifiziert werden. Dann sollte die Anwendung link() aufrufen, die feststellt, dass das Programm bereits spezifiziert und gelinkt wurde, so dass weitere Operationen mit dem Shader-Programm durchgeführt werden können. Die ID des Shader-Programms kann explizit mit der Funktion create() erstellt werden.
Zwischenspeichern von Programm-Binärdateien
Ab Qt 5.9 ist die Unterstützung für das Zwischenspeichern von Programm-Binärdateien auf der Festplatte eingebaut. Um dies zu aktivieren, wechseln Sie zur Verwendung von addCacheableShaderFromSourceCode() und addCacheableShaderFromSourceFile(). Mit einem OpenGL ES 3.x-Kontext oder der Unterstützung von GL_ARB_get_program_binary
werden Programm-Binärdateien transparent unter QStandardPaths::GenericCacheLocation oder QStandardPaths::CacheLocation zwischengespeichert. Wenn keine Unterstützung verfügbar ist, ist der Aufruf der cachefähigen Funktionsvarianten gleichwertig mit den normalen.
Hinweis: Einige Treiber haben keine Binärformate zur Verfügung, auch wenn sie die Erweiterung ankündigen oder OpenGL ES 3.0 anbieten. In diesem Fall wird die Binärunterstützung des Programms deaktiviert.
Siehe auch QOpenGLShader.
Dokumentation der Mitgliedsfunktionen
[explicit]
QOpenGLShaderProgram::QOpenGLShaderProgram(QObject *parent = nullptr)
Konstruiert ein neues Shader-Programm und fügt es an parent an. Das Programm ist ungültig, bis addShader() aufgerufen wird.
Das Shader-Programm wird mit dem aktuellen QOpenGLContext verbunden.
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 auf link() verschoben und findet möglicherweise gar nicht statt, da link() möglicherweise ein Programm-Binary aus dem Shader-Disk-Cache von Qt verwendet. Dies führt typischerweise zu einer deutlichen Leistungssteigerung.
Gibt true zurück, wenn der Shader registriert oder, im nicht gecachten Fall, erfolgreich kompiliert wurde; false, wenn es einen Fehler gab. Die Fehlermeldungen der Kompilierung können über log() abgerufen werden.
Wenn der Festplatten-Cache deaktiviert ist, z. B. über Qt::AA_DisableShaderDiskCache, oder der OpenGL-Kontext keine Unterstützung für Kontext-Binärdateien hat, ist der Aufruf dieser Funktion äquivalent zu addShaderFromSourceCode().
Siehe auch addShaderFromSourceCode() und addCacheableShaderFromSourceFile().
bool QOpenGLShaderProgram::addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source)
Dies ist eine überladene Funktion.
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() möglicherweise ein Programm-Binary aus dem Shader-Disk-Cache von Qt verwendet. Dies führt typischerweise zu einer deutlichen Leistungssteigerung.
Gibt true zurück, wenn der Shader registriert oder, im nicht gecachten Fall, erfolgreich kompiliert wurde; false, wenn es einen Fehler gab. Die Fehlermeldungen der Kompilierung können über log() abgerufen werden.
Wenn der Festplatten-Cache deaktiviert ist, z. B. über Qt::AA_DisableShaderDiskCache, oder der OpenGL-Kontext keine Unterstützung für Kontext-Binärdateien hat, ist der Aufruf dieser Funktion äquivalent zu addShaderFromSourceCode().
Siehe auch addShaderFromSourceCode() und addCacheableShaderFromSourceFile().
bool QOpenGLShaderProgram::addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source)
Dies ist eine überladene Funktion.
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 überhaupt nicht statt, da link() möglicherweise ein Programm-Binary aus dem Shader-Disk-Cache von Qt verwendet. Dies führt in der Regel zu einer deutlichen Leistungssteigerung.
Wenn der Disk-Cache deaktiviert ist, z.B. über Qt::AA_DisableShaderDiskCache, oder der OpenGL-Kontext keine Unterstützung für Kontext-Binärdateien hat, ist der Aufruf dieser Funktion äquivalent zu addShaderFromSourceCode().
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 auf link() verschoben und findet möglicherweise gar nicht statt, da link() möglicherweise ein Programm-Binary 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, false, wenn die Datei nicht geöffnet werden konnte oder die normale, nicht gecachte Kompilierung des Shaders fehlgeschlagen ist. Die Fehlermeldungen der Kompilierung können über log() abgerufen werden.
Wenn der Festplatten-Cache deaktiviert ist, z.B. über Qt::AA_DisableShaderDiskCache, oder der OpenGL-Kontext keine Unterstützung für Kontext-Binärdateien hat, ist der Aufruf dieser Funktion äquivalent zu addShaderFromSourceFile().
Siehe auch addShaderFromSourceFile() und addCacheableShaderFromSourceCode().
bool QOpenGLShaderProgram::addShader(QOpenGLShader *shader)
Fügt einen kompilierten shader zu diesem Shader-Programm hinzu. Gibt true
zurück, wenn der Shader hinzugefügt werden konnte, andernfalls false.
Das Eigentum an dem shader Objekt bleibt beim Aufrufer. Es wird nicht gelöscht, wenn diese QOpenGLShaderProgram Instanz gelöscht wird. Dies ermöglicht es dem Aufrufer, denselben Shader zu mehreren Shaderprogrammen hinzuzufü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 es zu diesem Shaderprogramm hinzu. Gibt true
zurück, wenn die Kompilierung erfolgreich war, andernfalls false. Die Kompilierungsfehler und Warnungen werden über log() zur Verfügung gestellt.
Diese Funktion ist als Abkürzung gedacht, um schnell Vertex- und Fragment-Shader zu einem Shader-Programm hinzuzufügen, ohne zuerst eine Instanz von QOpenGLShader zu erstellen.
Siehe auch addShader(), addShaderFromSourceFile(), removeShader(), link(), log(), und removeAllShaders().
bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source)
Dies ist eine überladene Funktion.
Kompiliert source als Shader des angegebenen type und fügt ihn zu diesem Shaderprogramm hinzu. Gibt true
zurück, wenn die Kompilierung erfolgreich war, andernfalls false. Die Kompilierungsfehler und Warnungen werden über log() zur Verfügung gestellt.
Diese Funktion ist als Abkürzung gedacht, um schnell Vertex- und Fragment-Shader zu einem Shader-Programm hinzuzufügen, ohne zuerst eine Instanz von QOpenGLShader zu erstellen.
Siehe auch addShader(), addShaderFromSourceFile(), removeShader(), link(), log(), und removeAllShaders().
bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source)
Dies ist eine überladene Funktion.
Kompiliert source als Shader des angegebenen type und fügt ihn zu diesem Shaderprogramm hinzu. Gibt true
zurück, wenn die Kompilierung erfolgreich war, andernfalls false. Die Kompilierungsfehler und Warnungen werden über log() zur Verfügung gestellt.
Diese Funktion ist als Abkürzung gedacht, um schnell Vertex- und Fragment-Shader zu einem Shader-Programm hinzuzufügen, ohne zuerst eine Instanz von QOpenGLShader zu erstellen.
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 zu diesem Shaderprogramm hinzu. Gibt true
zurück, wenn die Kompilierung erfolgreich war, andernfalls false. Die Kompilierungsfehler und Warnungen werden über log() zur Verfügung gestellt.
Diese Funktion ist als Abkürzung gedacht, um schnell Vertex- und Fragment-Shader zu einem Shader-Programm hinzuzufügen, ohne zuerst eine Instanz von QOpenGLShader zu erstellen.
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 Shaderprogramm ist.
Siehe auch uniformLocation() und bindAttributeLocation().
int QOpenGLShaderProgram::attributeLocation(const QByteArray &name) const
Dies ist eine überladene Funktion.
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 Shaderprogramm ist.
Siehe auch uniformLocation() und bindAttributeLocation().
int QOpenGLShaderProgram::attributeLocation(const QString &name) const
Dies ist eine überladene Funktion.
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 Shaderprogramm ist.
Siehe auch uniformLocation() und bindAttributeLocation().
bool QOpenGLShaderProgram::bind()
Bindet dieses Shaderprogramm an das aktive QOpenGLContext und macht es zum aktuellen Shaderprogramm. Jedes zuvor gebundene Shaderprogramm wird freigegeben. Dies ist gleichbedeutend mit dem Aufruf von glUseProgram()
auf programId(). Gibt true
zurück, wenn das Programm erfolgreich gebunden wurde; andernfalls false. Wenn das Shader-Programm noch nicht gebunden wurde oder neu gebunden 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 aufgerufen werden, bevor oder nachdem das Programm gelinkt wurde. Alle Attribute, die nicht explizit gebunden wurden, wenn das Programm gelinkt wird, werden automatisch zugewiesen.
Wenn diese Funktion aufgerufen wird, nachdem das Programm gelinkt wurde, muss das Programm neu gelinkt werden, damit die Änderung wirksam wird.
Siehe auch attributeLocation().
void QOpenGLShaderProgram::bindAttributeLocation(const QByteArray &name, int location)
Dies ist eine überladene Funktion.
Bindet das Attribut name an die angegebene location. Diese Funktion kann aufgerufen werden, bevor oder nachdem das Programm gelinkt wurde. Alle Attribute, die nicht explizit gebunden wurden, wenn das Programm gelinkt wird, werden automatisch zugewiesen.
Wenn diese Funktion aufgerufen wird, nachdem das Programm gelinkt wurde, muss das Programm neu gelinkt werden, damit die Änderung wirksam wird.
Siehe auch attributeLocation().
void QOpenGLShaderProgram::bindAttributeLocation(const QString &name, int location)
Dies ist eine überladene Funktion.
Bindet das Attribut name an die angegebene location. Diese Funktion kann aufgerufen werden, bevor oder nachdem das Programm gelinkt wurde. Alle Attribute, die nicht explizit gebunden wurden, wenn das Programm gelinkt wird, werden automatisch zugewiesen.
Wenn diese Funktion aufgerufen wird, nachdem das Programm gelinkt wurde, muss das Programm neu gelinkt werden, damit die Änderung wirksam wird.
Siehe auch attributeLocation().
bool QOpenGLShaderProgram::create()
Fordert an, dass die ID des Shader-Programms sofort erstellt wird. Gibt bei Erfolg true
zurück, andernfalls false
.
Diese Funktion ist in erster Linie nützlich, wenn QOpenGLShaderProgram mit anderen OpenGL-Funktionen kombiniert wird, die direkt auf die Shader-Programm-ID wirken, wie GL_OES_get_program_binary
.
Wenn das Shader-Programm normal verwendet wird, wird die Shader-Programm-ID bei Bedarf erstellt.
Siehe auch programId().
QList<float> QOpenGLShaderProgram::defaultInnerTessellationLevels() const
Gibt die standardmäßigen inneren Tessellierungsebenen zurück, die vom Tessellierungsprimitiv-Generator verwendet werden, falls der Tessellierungssteuerungs-Shader sie nicht ausgibt. Für weitere Details über OpenGL und Tessellationsshader siehe OpenGL Tessellationsshader.
Gibt eine QList von Fließkommazahlen zurück, die die inneren Tesselationsstufen beschreiben. Der Vektor hat immer zwei Elemente, aber nicht alle davon sind für jeden Tesselationsmodus sinnvoll.
Hinweis: Dies gibt den globalen OpenGL-Statuswert zurück. Er ist nicht spezifisch für diese QOpenGLShaderProgram Instanz.
Hinweis: Diese Funktion wird nur mit OpenGL >= 4.0 unterstützt und gibt keine gültigen Ergebnisse mit OpenGL ES 3.2 zurück.
Siehe auch setDefaultInnerTessellationLevels() und defaultOuterTessellationLevels().
QList<float> QOpenGLShaderProgram::defaultOuterTessellationLevels() const
Gibt die standardmäßigen äußeren Tessellierungsebenen zurück, die vom Tessellierungsprimitiv-Generator verwendet werden, falls der Tessellierungssteuerungs-Shader sie nicht ausgibt. Für weitere Details über OpenGL und Tessellationsshader siehe OpenGL Tessellationsshader.
Gibt eine QList von Fließkommazahlen zurück, die die äußeren Tesselationsstufen beschreiben. Der Vektor hat immer vier Elemente, aber nicht alle davon sind für jeden Tesselationsmodus sinnvoll.
Hinweis: Dies gibt den globalen OpenGL-Statuswert zurück. Er ist nicht spezifisch für diese QOpenGLShaderProgram Instanz.
Hinweis: Diese Funktion wird nur mit OpenGL >= 4.0 unterstützt und gibt keine gültigen Ergebnisse mit OpenGL ES 3.2 zurück.
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)
Dies ist eine überladene Funktion.
Deaktiviert das Vertex-Array namens name in diesem Shader-Programm, das durch einen vorherigen Aufruf von enableAttributeArray() aktiviert wurde.
Siehe auch enableAttributeArray(), setAttributeArray(), setAttributeValue(), und setUniformValue().
void QOpenGLShaderProgram::enableAttributeArray(int location)
Aktiviert das Vertex-Array unter location in diesem Shader-Programm, so dass der mit setAttributeArray() auf location eingestellte Wert vom Shader-Programm verwendet wird.
Siehe auch disableAttributeArray(), setAttributeArray(), setAttributeValue(), und setUniformValue().
void QOpenGLShaderProgram::enableAttributeArray(const char *name)
Dies ist eine überladene Funktion.
Aktiviert das Vertex-Array mit dem Namen name in diesem Shader-Programm, so dass der Wert, der mit setAttributeArray() auf name gesetzt wurde, vom Shader-Programm verwendet wird.
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 verwendet, um die GLSL-Erweiterungen aufzulösen. Wenn context nullptr
ist, wird QOpenGLContext::currentContext() verwendet.
bool QOpenGLShaderProgram::isLinked() const
Gibt true
zurück, wenn dieses Shader-Programm gelinkt wurde; andernfalls false.
Siehe auch link().
[virtual]
bool QOpenGLShaderProgram::link()
Verknüpft die Shader, die mit addShader() zu diesem Programm hinzugefügt wurden, miteinander. 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 einheitliche Variablen für die Verwendung in bestimmten Shader-Programmen zu initialisieren.
Wenn das Shader-Programm bereits gelinkt wurde, erzwingt ein erneuter Aufruf dieser Funktion ein erneutes Linken.
Wenn Shader über addCacheableShaderFromSourceCode() oder addCacheableShaderFromSourceFile() zu diesem Programm hinzugefügt wurden, Programm-Binärdateien unterstützt werden und eine zwischengespeicherte Binärdatei auf der Festplatte verfügbar ist, werden die eigentliche Kompilierung und das Linken übersprungen. Stattdessen wird link() das Programm mit dem binären Blob über glProgramBinary() initialisieren. Wenn es keine zwischengespeicherte Version des Programms gibt oder es mit einer anderen Treiberversion erzeugt wurde, werden die Shader aus dem Quellcode kompiliert und das Programm wird normal gelinkt. Dies ermöglicht ein nahtloses Upgrade der Grafiktreiber, ohne dass man sich um potentiell inkompatible Binärformate kümmern muss.
Siehe auch addShader() und log().
QString QOpenGLShaderProgram::log() const
Gibt die Fehler und Warnungen zurück, die während der letzten link() oder addShader() mit explizit angegebenem Quellcode aufgetreten sind.
Siehe auch link().
int QOpenGLShaderProgram::maxGeometryOutputVertices() const
Gibt das Hardware-Limit für die Anzahl der Scheitelpunkte zurück, die ein Geometrieshader ausgeben kann.
int QOpenGLShaderProgram::patchVertexCount() const
Gibt die Anzahl der Scheitelpunkte pro Patch zurück, die beim Rendern verwendet werden sollen.
Hinweis: Dies gibt den globalen OpenGL-Statuswert zurück. Er ist nicht spezifisch für diese QOpenGLShaderProgram Instanz.
Siehe auch setPatchVertexCount().
GLuint QOpenGLShaderProgram::programId() const
Gibt den OpenGL-Bezeichner zurück, der mit diesem Shader-Programm verbunden ist.
Siehe auch QOpenGLShader::shaderId().
void QOpenGLShaderProgram::release()
Gibt das aktive Shader-Programm aus dem aktuellen QOpenGLContext frei. Dies ist gleichbedeutend mit 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 Shaderprogramm muss im aktuellen QOpenGLContext gültig sein.
Siehe auch addShader(), link(), und removeAllShaders().
void QOpenGLShaderProgram::setAttributeArray(int location, const QVector2D *values, int stride = 0)
Setzt ein Array von 2D-Eckpunkten values auf das Attribut location in diesem Shader-Programm. Die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Der Standardwert stride von Null zeigt an, dass die Scheitelpunkte in values dicht gepackt sind.
Das Array wird aktiv, wenn enableAttributeArray() auf location aufgerufen wird. Ansonsten 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)
Setzt ein Array von 3D-Eckpunkten values auf das Attribut location in diesem Shader-Programm. Die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Der Standardwert stride von Null zeigt an, dass die Scheitelpunkte in values dicht gepackt sind.
Das Array wird aktiv, wenn enableAttributeArray() auf location aufgerufen wird. Ansonsten 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)
Setzt ein Array von 4D-Vertexen values auf das Attribut location in diesem Shader-Programm. Die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Der Standardwert stride von Null zeigt an, dass die Scheitelpunkte in values dicht gepackt sind.
Das Array wird aktiv, wenn enableAttributeArray() auf location aufgerufen wird. Ansonsten 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)
Setzt ein Array von Scheitelpunkten values auf das Attribut unter location in diesem Shader-Programm. tupleSize gibt die Anzahl der Komponenten pro Scheitelpunkt an (1, 2, 3 oder 4), und stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Ein Standardwert stride von Null zeigt an, dass die Scheitelpunkte in values dicht gepackt sind.
Das Array wird aktiv, wenn enableAttributeArray() auf location aufgerufen wird. Ansonsten 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)
Setzt ein Array von Vertex values auf das Attribut location in diesem Shader-Programm. Die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Der Standardwert stride von Null zeigt an, dass die Scheitelpunkte in values dicht gepackt sind.
type gibt den Typ der Elemente im Array values an, normalerweise GL_FLOAT
, GL_UNSIGNED_BYTE
, usw. Der tupleSize gibt die Anzahl der Komponenten pro Scheitelpunkt an: 1, 2, 3 oder 4.
Das Array wird aktiv, wenn enableAttributeArray() auf location aufgerufen wird. Andernfalls wird der mit setAttributeValue() angegebene Wert für location 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. Wenn dies nicht erwünscht ist, 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)
Dies ist eine überladene Funktion.
Setzt ein Array von 2D-Eckpunkten values auf das Attribut name in diesem Shader-Programm. Die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Der Standardwert stride von Null zeigt an, dass die Scheitelpunkte 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.
Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray(), und disableAttributeArray().
void QOpenGLShaderProgram::setAttributeArray(const char *name, const QVector3D *values, int stride = 0)
Dies ist eine überladene Funktion.
Setzt ein Array von 3D-Eckpunkten values auf das Attribut name in diesem Shader-Programm. Die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Der Standardwert stride von Null zeigt an, dass die Scheitelpunkte 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.
Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray(), und disableAttributeArray().
void QOpenGLShaderProgram::setAttributeArray(const char *name, const QVector4D *values, int stride = 0)
Dies ist eine überladene Funktion.
Setzt ein Array von 4D-Vertexen values auf das Attribut name in diesem Shader-Programm. Die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Ein Standardwert stride von Null zeigt an, dass die Scheitelpunkte 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.
Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray(), und disableAttributeArray().
void QOpenGLShaderProgram::setAttributeArray(const char *name, const GLfloat *values, int tupleSize, int stride = 0)
Dies ist eine überladene Funktion.
Setzt ein Array von Vertex values auf das Attribut name in diesem Shader-Programm. tupleSize gibt die Anzahl der Komponenten pro Scheitelpunkt an (1, 2, 3 oder 4), und stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Ein Standardwert stride von Null zeigt an, dass die Scheitelpunkte 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.
Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray(), und disableAttributeArray().
void QOpenGLShaderProgram::setAttributeArray(const char *name, GLenum type, const void *values, int tupleSize, int stride = 0)
Dies ist eine überladene Funktion.
Setzt ein Array von Vertex values auf das Attribut name in diesem Shader-Programm. Die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Ein Standardwert stride von Null zeigt an, dass die Scheitelpunkte in values dicht gepackt sind.
type gibt den Typ der Elemente im Array values an, in der Regel GL_FLOAT
, GL_UNSIGNED_BYTE
, usw. Der tupleSize gibt die Anzahl der Komponenten pro Scheitelpunkt an: 1, 2, 3 oder 4.
Das Array wird aktiv, wenn enableAttributeArray() auf name aufgerufen wird. Andernfalls wird der mit setAttributeValue() angegebene Wert für name verwendet.
Die Funktion setAttributeBuffer() kann verwendet werden, um das Attribut-Array auf einen Offset innerhalb eines Vertex-Puffers zu setzen.
Siehe auch setAttributeValue(), setUniformValue(), enableAttributeArray(), disableAttributeArray(), und setAttributeBuffer().
void QOpenGLShaderProgram::setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride = 0)
Setzt ein Array von Scheitelpunktwerten auf das Attribut unter location in diesem Shader-Programm, beginnend bei einem bestimmten offset im aktuell gebundenen Scheitelpunktpuffer. Die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Der Standardwert stride von Null zeigt an, dass die Scheitelpunkte im Wertefeld dicht gepackt sind.
type gibt den Typ der Elemente im Scheitelpunkt-Wertefeld an, normalerweise GL_FLOAT
, GL_UNSIGNED_BYTE
, usw. Der tupleSize gibt die Anzahl der Komponenten pro Scheitelpunkt an: 1, 2, 3 oder 4.
Das Array wird aktiv, wenn enableAttributeArray() auf location aufgerufen wird. Andernfalls wird der mit setAttributeValue() angegebene Wert für location verwendet.
Hinweis: Die Normalisierung wird aktiviert. Wenn dies nicht erwü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)
Dies ist eine überladene Funktion.
Setzt ein Array von Scheitelpunktwerten auf das Attribut mit dem Namen name in diesem Shader-Programm, beginnend bei einem bestimmten offset im aktuell gebundenen Scheitelpunktpuffer. Die stride gibt die Anzahl der Bytes zwischen den Scheitelpunkten an. Ein Standardwert stride von Null zeigt an, dass die Scheitelpunkte im Wertefeld dicht gepackt sind.
type gibt den Typ der Elemente im Scheitelpunkt-Wertefeld an, normalerweise GL_FLOAT
, GL_UNSIGNED_BYTE
, usw. Der tupleSize gibt die Anzahl der Komponenten pro Scheitelpunkt an: 1, 2, 3 oder 4.
Das Array wird aktiv, wenn enableAttributeArray() auf name aufgerufen wird. Andernfalls wird der mit setAttributeValue() angegebene Wert für name verwendet.
Siehe auch setAttributeArray().
void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat value)
Setzt das Attribut unter location im aktuellen Kontext auf value.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(int location, const QColor &value)
Setzt das Attribut unter location im aktuellen Kontext auf value.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(int location, const QVector2D &value)
Setzt das Attribut unter location im aktuellen Kontext auf value.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(int location, const QVector3D &value)
Setzt das Attribut unter location im aktuellen Kontext auf value.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(int location, const QVector4D &value)
Setzt das Attribut unter 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 unter 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 location im aktuellen Kontext auf den Inhalt von values, das columns Elemente enthält, die jeweils aus rows Elementen bestehen. Der Wert rows sollte 1, 2, 3 oder 4 sein. Diese Funktion wird normalerweise verwendet, um Matrixwerte und Spaltenvektoren zu setzen.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
Setzt das Attribut unter location im aktuellen Kontext auf den 4D-Vektor (x, y, z, w).
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat value)
Dies ist eine überladene Funktion.
Setzt das Attribut namens name im aktuellen Kontext auf value.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(const char *name, const QColor &value)
Dies ist eine überladene Funktion.
Setzt das Attribut namens name im aktuellen Kontext auf value.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector2D &value)
Dies ist eine überladene Funktion.
Setzt das Attribut namens name im aktuellen Kontext auf value.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector3D &value)
Dies ist eine überladene Funktion.
Setzt das Attribut namens name im aktuellen Kontext auf value.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector4D &value)
Dies ist eine überladene Funktion.
Setzt das Attribut namens name im aktuellen Kontext auf value.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat x, GLfloat y)
Dies ist eine überladene Funktion.
Setzt das Attribut namens name im aktuellen Kontext auf den 2D-Vektor (x, y).
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z)
Dies ist eine überladene Funktion.
Setzt das Attribut namens name im aktuellen Kontext auf den 3D-Vektor (x, y, z).
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(const char *name, const GLfloat *values, int columns, int rows)
Dies ist eine überladene Funktion.
Setzt das Attribut mit dem Namen name im aktuellen Kontext auf den Inhalt von values, das columns Elemente enthält, die jeweils aus rows Elementen bestehen. Der Wert rows sollte 1, 2, 3 oder 4 sein. Diese Funktion wird normalerweise verwendet, um Matrixwerte und Spaltenvektoren zu setzen.
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
Dies ist eine überladene Funktion.
Setzt das Attribut namens name im aktuellen Kontext auf den 4D-Vektor (x, y, z, w).
Siehe auch setUniformValue().
void QOpenGLShaderProgram::setDefaultInnerTessellationLevels(const QList<float> &levels)
Legt die standardmäßigen äußeren Tessellierungsebenen fest, die vom Tessellierungsprimitiv-Generator verwendet werden, falls der Tessellierungssteuerungs-Shader sie nicht an levels ausgibt. Weitere Details über OpenGL und Tessellationsshader finden Sie unter OpenGL Tessellationsshader.
Das levels Argument sollte ein QList sein, bestehend aus 2 Floats. Nicht alle Werte sind für alle Tesselationsmodi sinnvoll. Wenn Sie einen Vektor mit weniger als 2 Elementen angeben, wird für die verbleibenden Elemente der Standardwert 1 verwendet.
Hinweis: Dies ändert den globalen OpenGL-Status und ist nicht spezifisch für diese QOpenGLShaderProgram Instanz. Du solltest dies in deiner Renderfunktion aufrufen, wenn du es brauchst, da QOpenGLShaderProgram dies nicht für dich anwenden wird. Dies ist 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 standardmäßigen äußeren Tessellierungsebenen fest, die vom Tessellierungsprimitiv-Generator verwendet werden, falls der Tessellierungssteuerungs-Shader sie nicht an levels ausgibt. Weitere Details über OpenGL und Tessellationsshader finden Sie unter OpenGL Tessellationsshader.
Das levels Argument sollte ein QList sein, bestehend aus 4 Floats. Nicht alle Werte sind für alle Tesselationsmodi sinnvoll. Wenn Sie einen Vektor mit weniger als 4 Elementen angeben, wird für die verbleibenden Elemente der Standardwert 1 verwendet.
Hinweis: Dies ändert den globalen OpenGL-Status und ist nicht spezifisch für diese QOpenGLShaderProgram Instanz. Du solltest dies in deiner Renderfunktion aufrufen, wenn du es brauchst, da QOpenGLShaderProgram dies nicht für dich anwenden wird. Dies ist 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 an count zu übergeben. Ein Patch ist ein benutzerdefiniertes OpenGL-Primitiv, dessen Interpretation vollständig durch die Tessellationsshader-Stufen definiert ist. Daher ist der Aufruf dieser Funktion nur dann sinnvoll, wenn eine QOpenGLShaderProgram verwendet wird, die Tessellationsshaderstufen enthält. Bei der Verwendung von OpenGL-Tessellation ist das einzige Primitiv, das mit glDraw*()
-Funktionen gerendert werden kann, GL_PATCHES
.
Dies ist gleichbedeutend mit dem Aufruf von glPatchParameteri(GL_PATCH_VERTICES, count).
Hinweis: Dies ändert den globalen OpenGL-Status und ist nicht spezifisch für diese QOpenGLShaderProgram Instanz. Du solltest dies in deiner Renderfunktion aufrufen, wenn du es brauchst, da QOpenGLShaderProgram dies nicht für dich anwenden wird. Dies ist eine reine Komfortfunktion.
Siehe auch patchVertexCount().
void QOpenGLShaderProgram::setUniformValue(int location, GLfloat value)
Setzt die einheitliche Variable unter location im aktuellen Kontext auf value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, GLint value)
Setzt die einheitliche Variable unter location im aktuellen Kontext auf value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x4 &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 3x4-Matrix value.
Hinweis: Diese Funktion kennt nicht die Unterstützung für nicht-quadratische Matrizen, d.h. GLSL-Typen wie mat3x4, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die Uniform als ein Array von vec4.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x2 &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 4x2-Matrix value.
Hinweis: Diese Funktion kennt nicht die Unterstützung für nicht-quadratische Matrizen, d.h. GLSL-Typen wie mat4x2, die in modernen OpenGL-Versionen vorhanden ist. Stattdessen behandelt sie die Uniform als ein Array von vec2.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x3 &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 4x3-Matrix value.
Hinweis: Diese Funktion kennt nicht die Unterstützung für nicht-quadratische Matrizen, d.h. GLSL-Typen wie mat4x3, die in modernen OpenGL-Versionen vorhanden ist. Stattdessen behandelt sie die Uniform als ein Array von vec3.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x4 &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 4x4-Matrix value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QPoint &point)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable, die im aktuellen Kontext mit name verbunden ist, auf die x- und y-Koordinaten von point.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QPointF &point)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable, die im aktuellen Kontext mit name verbunden ist, auf die x- und y-Koordinaten von point.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QSize &size)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable, die mit name verbunden ist, im aktuellen Kontext auf die Breite und Höhe der angegebenen size.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QSizeF &size)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable, die mit name verbunden ist, im aktuellen Kontext auf die Breite und Höhe der angegebenen size.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QTransform &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable mit dem Namen name im aktuellen Kontext auf eine 3x3-Transformationsmatrix value, die als Wert QTransform angegeben ist.
Um einen QTransform -Wert als 4x4-Matrix in einem Shader zu setzen, verwenden Sie setUniformValue(name, QMatrix4x4(value))
.
void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector2D &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector3D &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector4D &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat[2][2] value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable auf location im aktuellen Kontext auf eine 2x2-Matrix value. Die Matrixelemente müssen in der Reihenfolge der Spaltenmajorität angegeben werden.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat[3][3] value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable auf location im aktuellen Kontext auf eine 3x3-Matrix value. Die Matrixelemente müssen in der Reihenfolge der Spaltenmajorität angegeben werden.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat[4][4] value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable auf location im aktuellen Kontext auf eine 4x4-Matrix value. Die Matrixelemente müssen in der Reihenfolge der Spaltenmajorität angegeben werden.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat x, GLfloat y)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf den 2D-Vektor (x, y).
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf den 3D-Vektor (x, y, z).
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf den 4D-Vektor (x, y, z, w).
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, GLuint value)
Setzt die Uniform-Variable unter location im aktuellen Kontext auf value. Diese Funktion sollte verwendet werden, wenn Sampler-Werte gesetzt werden.
Hinweis: Diese Funktion kennt die Unterstützung von unsigned int in modernen OpenGL-Versionen nicht und behandelt daher value als GLint und ruft glUniform1i auf.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QColor &color)
Setzt die einheitliche Variable 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 auf location im aktuellen Kontext auf eine 2x2-Matrix value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x3 &value)
Setzt die einheitliche Variable auf location im aktuellen Kontext auf eine 2x3-Matrix value.
Hinweis: Diese Funktion kennt nicht die Unterstützung für nicht-quadratische Matrizen, d.h. GLSL-Typen wie mat2x3, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die Uniform als ein Array von vec3.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x4 &value)
Setzt die einheitliche Variable auf location im aktuellen Kontext auf eine 2x4-Matrix value.
Hinweis: Diese Funktion kennt nicht die 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 als ein Array von vec4.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x2 &value)
Setzt die einheitliche Variable auf location im aktuellen Kontext auf eine 3x2-Matrix value.
Hinweis: Diese Funktion kennt nicht die Unterstützung für nicht-quadratische Matrizen, d.h. GLSL-Typen wie mat3x2, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die Uniform als ein Array von vec2.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x3 &value)
Setzt die einheitliche Variable auf location im aktuellen Kontext auf eine 3x3-Matrix value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x4 &value)
Setzt die einheitliche Variable auf location im aktuellen Kontext auf eine 3x4-Matrix value.
Hinweis: Diese Funktion kennt nicht die Unterstützung für nicht-quadratische Matrizen, d.h. GLSL-Typen wie mat3x4, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die Uniform als ein Array von vec4.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x2 &value)
Setzt die einheitliche Variable auf location im aktuellen Kontext auf eine 4x2-Matrix value.
Hinweis: Diese Funktion kennt nicht die Unterstützung für nicht-quadratische Matrizen, d.h. GLSL-Typen wie mat4x2, die in modernen OpenGL-Versionen vorhanden sind. Stattdessen behandelt sie die Uniform als ein Array von vec2.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x3 &value)
Setzt die einheitliche Variable auf location im aktuellen Kontext auf eine 4x3-Matrix value.
Hinweis: Diese Funktion kennt nicht die 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 als ein Array von vec3.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x4 &value)
Setzt die einheitliche Variable unter location im aktuellen Kontext auf eine 4x4-Matrix value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QPoint &point)
Setzt die einheitliche Variable auf 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 auf 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 einheitliche Variable location im aktuellen Kontext auf die Breite und Höhe der angegebenen size.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QSizeF &size)
Setzt die einheitliche Variable location im aktuellen Kontext auf die Breite und Höhe der angegebenen size.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QTransform &value)
Setzt die einheitliche Variable location im aktuellen Kontext auf eine 3x3-Transformationsmatrix value, die als Wert QTransform angegeben ist.
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 einheitliche Variable unter location im aktuellen Kontext auf value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QVector3D &value)
Setzt die einheitliche Variable unter location im aktuellen Kontext auf value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, const QVector4D &value)
Setzt die einheitliche Variable unter location im aktuellen Kontext auf value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(int location, GLfloat x, GLfloat y)
Setzt die einheitliche 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 einheitliche Variable unter location im aktuellen Kontext auf den 4D-Vektor (x, y, z, w).
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, GLint value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, GLuint value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf value. Diese Funktion sollte verwendet werden, wenn Sampler-Werte gesetzt werden.
Hinweis: Diese Funktion kennt die Unterstützung von unsigned int in modernen OpenGL-Versionen nicht und behandelt daher value als GLint und ruft glUniform1i auf.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat[2][2] value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 2x2-Matrix value. Die Matrixelemente müssen in der Reihenfolge der Spaltenmajorität angegeben werden.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat[3][3] value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 3x3-Matrix value. Die Matrixelemente müssen in der Reihenfolge der Spaltenmajorität angegeben werden.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat[4][4] value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 4x4-Matrix value. Die Matrixelemente müssen in der Reihenfolge der Spaltenmajorität angegeben werden.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QColor &color)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf die Rot-, Grün-, Blau- und Alpha-Komponenten von color.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x2 &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 2x2-Matrix value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x3 &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 2x3-Matrix value.
Hinweis: Diese Funktion kennt nicht die Unterstützung für nicht-quadratische Matrizen, d.h. GLSL-Typen wie mat2x3, die in modernen OpenGL-Versionen vorhanden ist. Stattdessen behandelt sie die Uniform als ein Array von vec3.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x4 &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 2x4-Matrix value.
Hinweis: Diese Funktion kennt nicht die Unterstützung für nicht-quadratische Matrizen, d.h. GLSL-Typen wie mat2x4, die in modernen OpenGL-Versionen vorhanden ist. Stattdessen behandelt sie die Uniform als ein Array von vec4.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x2 &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 3x2-Matrix value.
Hinweis: Diese Funktion kennt nicht die Unterstützung für nicht-quadratische Matrizen, d.h. GLSL-Typen wie mat3x2, die in modernen OpenGL-Versionen vorhanden ist. Stattdessen behandelt sie die Uniform als ein Array von vec2.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x3 &value)
Dies ist eine überladene Funktion.
Setzt die einheitliche Variable namens name im aktuellen Kontext auf eine 3x3-Matrix value.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(int location, const GLint *values, int count)
Setzt das einheitliche Variablen-Array 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 einheitliche Variablenarray unter location im aktuellen Kontext auf die count Elemente von values. Diese Überladung sollte verwendet werden, wenn ein Array von Samplerwerten gesetzt wird.
Hinweis: Diese Funktion ist sich der Unterstützung von unsigned int in modernen OpenGL-Versionen nicht bewusst 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 einheitliche Variablenfeld unter location im aktuellen Kontext auf die count 2x2 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x3 *values, int count)
Setzt das einheitliche Variablenfeld unter location im aktuellen Kontext auf die count 2x3 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x4 *values, int count)
Setzt das einheitliche Variablenfeld 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 einheitliche Variablenfeld unter location im aktuellen Kontext auf die 3x2-Matrixelemente von count values .
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x3 *values, int count)
Setzt das einheitliche Variablenfeld unter location im aktuellen Kontext auf die 3x3-Matrixelemente von count values .
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x4 *values, int count)
Setzt das einheitliche Variablenfeld unter location im aktuellen Kontext auf die 3x4-Matrixelemente von count values .
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x2 *values, int count)
Setzt das einheitliche Variablenfeld unter location im aktuellen Kontext auf die count 4x2 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x3 *values, int count)
Setzt das einheitliche Variablenfeld unter location im aktuellen Kontext auf die count 4x3 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x4 *values, int count)
Setzt das einheitliche Variablenfeld unter location im aktuellen Kontext auf die count 4x4 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(int location, const QVector2D *values, int count)
Setzt das einheitliche Variablenfeld 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 einheitliche Variablen-Array 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 einheitliche Variablenfeld 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 einheitliche Variablenfeld 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)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name im aktuellen Kontext auf die count Elemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const GLuint *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name im aktuellen Kontext auf die count Elemente von values. Diese Überladung sollte verwendet werden, wenn ein Array von Sampler-Werten gesetzt wird.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x2 *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablenarray namens name im aktuellen Kontext auf die count 2x2 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x3 *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablenarray namens name im aktuellen Kontext auf die count 2x3 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x4 *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablenarray namens name im aktuellen Kontext auf die count 2x4 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x2 *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name im aktuellen Kontext auf die 3x2-Matrixelemente von count values .
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x3 *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name im aktuellen Kontext auf die 3x3-Matrixelemente von count values .
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x4 *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name im aktuellen Kontext auf die 3x4-Matrixelemente von count values .
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x2 *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablenarray namens name im aktuellen Kontext auf die count 4x2 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x3 *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name im aktuellen Kontext auf die count 4x3 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x4 *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name im aktuellen Kontext auf die count 4x4 Matrixelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector2D *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name im aktuellen Kontext auf die count 2D-Vektorelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector3D *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name im aktuellen Kontext auf die count 3D-Vektorelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector4D *values, int count)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name im aktuellen Kontext auf die count 4D-Vektorelemente von values.
Siehe auch setAttributeValue().
void QOpenGLShaderProgram::setUniformValueArray(const char *name, const GLfloat *values, int count, int tupleSize)
Dies ist eine überladene Funktion.
Setzt das einheitliche Variablen-Array namens name 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().
QList<QOpenGLShader *> QOpenGLShaderProgram::shaders() const
Gibt eine Liste aller Shader zurück, die mit addShader() zu diesem Shaderprogramm hinzugefügt wurden.
Siehe auch addShader() und removeShader().
int QOpenGLShaderProgram::uniformLocation(const char *name) const
Gibt die Position der einheitlichen Variablen name innerhalb der Parameterliste dieses Shader-Programms zurück. Gibt -1 zurück, wenn name keine gültige einheitliche Variable für dieses Shaderprogramm ist.
Siehe auch attributeLocation().
int QOpenGLShaderProgram::uniformLocation(const QByteArray &name) const
Dies ist eine überladene Funktion.
Gibt die Position der einheitlichen Variablen name in der Parameterliste dieses Shader-Programms zurück. Gibt -1 zurück, wenn name keine gültige einheitliche Variable für dieses Shaderprogramm ist.
Siehe auch attributeLocation().
int QOpenGLShaderProgram::uniformLocation(const QString &name) const
Dies ist eine überladene Funktion.
Gibt die Position der einheitlichen Variablen name in der Parameterliste dieses Shader-Programms zurück. Gibt -1 zurück, wenn name keine gültige einheitliche Variable für dieses Shaderprogramm ist.
Siehe auch attributeLocation().
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.