glGetUniformLocation: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (→Hinweise) |
DGLBot (Diskussion | Beiträge) K (Bot: konvertiere/korrigiere <BR>) |
||
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
'''glGetUniformLocation''' - liefert den Ablageort einer uniform- Variable. | '''glGetUniformLocation''' - liefert den Ablageort einer uniform- Variable. | ||
− | + | ||
+ | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
function '''glGetUniformLocation'''(''program'': TGLuint; ''name'': PGLchar): GLint; | function '''glGetUniformLocation'''(''program'': TGLuint; ''name'': PGLchar): GLint; | ||
− | + | ||
+ | |||
== Parameter == | == Parameter == | ||
<table border=1 rules=all> | <table border=1 rules=all> | ||
Zeile 20: | Zeile 22: | ||
</table> | </table> | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
− | '''glGetUniformLocation''' liefert einen Integer-Wert, der dem Ablageort einer Variable innerhalb eines Shaders (''program'') entspricht. | + | '''glGetUniformLocation''' liefert einen Integer-Wert, der dem Ablageort einer Uniform-Variable innerhalb eines Shaders/Programm-Objekts (''program'') entspricht. |
− | ''name'' | + | |
− | Die Funktion liefert den Wert -1, wenn ''name'' als Variable nicht existiert oder wenn ''name'' | + | |
− | + | ''name'' muss ein 0-Terminierter, Leerzeichenfreier String sein. ''name'' muss der Name einer aktiven Uniform-Variable im Programm-Objekt sein welche keine Struktur (Struct), kein Feld (Array) von Strukturen und kein Teilelement einer Matrix oder eines Vektors ist.<br> | |
− | Die aktuellen Positionen der | + | Die Funktion liefert den Wert -1, wenn ''name'' als Variable nicht existiert oder wenn ''name'' mit dem reservierten Prefix "gl_" beginnt. |
− | Den Rückgabewert von glGetUniformLocation kann | + | |
+ | |||
+ | Um an die Position (Location) von Strukturen bzw. Strukturen in Feldern zu kommen muss '''glGetUniformLocation''' für jedes Feld innerhalb der Struktur aufgerufen werden. In ''name'' ist hier die ganze Bezeichnung anzugeben, inklusive "[]" bzw ".". Auch wenn diese Operatoren verwendet werden, darf das Ergebnis welches diese Operatoren in letzter Instanz zurückliefern keine Struktur bzw. kein Feld von Strukturen sein. Die einzigste Außnahme ist, wenn der letzte Teil von ''name'' auf ein Feld von Uniform-Variablen verweißt. Um an die Location des ersten Elements im Feld zu kommen kann der Name des Feldes mit oder ohne dem Anhang "[0]" verwendet werden. | ||
+ | |||
+ | |||
+ | Die aktuellen Positionen der Uniform-Variablen sind so lange unbekannt, bis der Shader erfolgreich gelinkt wird. Erst nach dem linken kann '''glGetUniformLocation''' benutzt werden um die Position einer Uniform Variable zu ermitteln.<br> | ||
+ | Den Rückgabewert von '''glGetUniformLocation''' kann in [[glUniform]] eingesetzen werden, um einer Uniform-Variable einen Wert zuzuweisen, oder in [[glGetUniform]], um den Wert einer Uniform-Variable auszulesen. | ||
+ | |||
+ | Nachdem ein Programm-Objekt erfolgreich gelinkt wurde, bleiben die Positionen (Locations) der Uniform-Variablen gleich bis das Programm-Objekt erneut gelinkt wurde. | ||
+ | Wert und Position von Uniform-Variablen können nur abgefragt werden, wenn das Linken erfolgreich verlief. | ||
== Hinweise == | == Hinweise == | ||
− | glGetUniformLocation wird | + | '''glGetUniformLocation''' wird ab OpenGL-Version 2.0 unterstützt. |
+ | |||
== Fehlermeldungen == | == Fehlermeldungen == | ||
− | GL_INVALID_VALUE | + | '''GL_INVALID_VALUE''' wird generiert wenn ''program'' kein von OpenGL generierter Wert ist. |
+ | |||
+ | '''GL_INVALID_OPERATION''' wird generiert wenn ''program'' kein Programmobjekt ist. | ||
+ | |||
+ | '''GL_INVALID_OPERATIO''' wird generiert wenn ''program'' nicht erfolgreich gelinkt werden konnte. | ||
+ | |||
+ | '''GL_INVALID_OPERATION''' wird generiert wenn ''location'' nicht zu einer gültigen Uniform-Variablen-Lokation des Programmobjekts gehört. | ||
+ | |||
+ | '''GL_INVALID_OPERATION''' wird generiert wenn '''glGetUniformLocation''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == Zugehörige Wertrückgaben== | ||
+ | [[glGetActiveUniform]] mit den Argumenten ''program'' und dem Index einer aktiven Uniform-Variable. | ||
+ | |||
+ | [[glGetProgram]] mit den Argumenten ''program'' und '''GL_ACTIVE_UNIFORMS''' oder '''GL_ACTIVE_UNIFORM_MAX_LENGTH'''. | ||
+ | |||
+ | [[glGetUniform]] mit den Argumenten ''program'' und dem Namen einer Uniform-Variable. | ||
− | + | [[glIsProgram]] | |
− | |||
− | + | ==Siehe auch== | |
+ | [[glLinkProgram]], [[glUniform]] | ||
− | |||
− | + | [[Kategorie:GL|GetUniformLocation]] |
Aktuelle Version vom 22. April 2006, 19:21 Uhr
Inhaltsverzeichnis
Name
glGetUniformLocation - liefert den Ablageort einer uniform- Variable.
Delphi-Spezifikation
function glGetUniformLocation(program: TGLuint; name: PGLchar): GLint;
Parameter
program | Gibt den Shader an, der die Variable enthält. |
name | Gibt den Namen der Variable an, deren Ablageort man herausfinden will. |
Beschreibung
glGetUniformLocation liefert einen Integer-Wert, der dem Ablageort einer Uniform-Variable innerhalb eines Shaders/Programm-Objekts (program) entspricht.
name muss ein 0-Terminierter, Leerzeichenfreier String sein. name muss der Name einer aktiven Uniform-Variable im Programm-Objekt sein welche keine Struktur (Struct), kein Feld (Array) von Strukturen und kein Teilelement einer Matrix oder eines Vektors ist.
Die Funktion liefert den Wert -1, wenn name als Variable nicht existiert oder wenn name mit dem reservierten Prefix "gl_" beginnt.
Um an die Position (Location) von Strukturen bzw. Strukturen in Feldern zu kommen muss glGetUniformLocation für jedes Feld innerhalb der Struktur aufgerufen werden. In name ist hier die ganze Bezeichnung anzugeben, inklusive "[]" bzw ".". Auch wenn diese Operatoren verwendet werden, darf das Ergebnis welches diese Operatoren in letzter Instanz zurückliefern keine Struktur bzw. kein Feld von Strukturen sein. Die einzigste Außnahme ist, wenn der letzte Teil von name auf ein Feld von Uniform-Variablen verweißt. Um an die Location des ersten Elements im Feld zu kommen kann der Name des Feldes mit oder ohne dem Anhang "[0]" verwendet werden.
Die aktuellen Positionen der Uniform-Variablen sind so lange unbekannt, bis der Shader erfolgreich gelinkt wird. Erst nach dem linken kann glGetUniformLocation benutzt werden um die Position einer Uniform Variable zu ermitteln.
Den Rückgabewert von glGetUniformLocation kann in glUniform eingesetzen werden, um einer Uniform-Variable einen Wert zuzuweisen, oder in glGetUniform, um den Wert einer Uniform-Variable auszulesen.
Nachdem ein Programm-Objekt erfolgreich gelinkt wurde, bleiben die Positionen (Locations) der Uniform-Variablen gleich bis das Programm-Objekt erneut gelinkt wurde.
Wert und Position von Uniform-Variablen können nur abgefragt werden, wenn das Linken erfolgreich verlief.
Hinweise
glGetUniformLocation wird ab OpenGL-Version 2.0 unterstützt.
Fehlermeldungen
GL_INVALID_VALUE wird generiert wenn program kein von OpenGL generierter Wert ist.
GL_INVALID_OPERATION wird generiert wenn program kein Programmobjekt ist.
GL_INVALID_OPERATIO wird generiert wenn program nicht erfolgreich gelinkt werden konnte.
GL_INVALID_OPERATION wird generiert wenn location nicht zu einer gültigen Uniform-Variablen-Lokation des Programmobjekts gehört.
GL_INVALID_OPERATION wird generiert wenn glGetUniformLocation innerhalb eines glBegin-glEnd Blocks aufgerufen wird..
Zugehörige Wertrückgaben
glGetActiveUniform mit den Argumenten program und dem Index einer aktiven Uniform-Variable.
glGetProgram mit den Argumenten program und GL_ACTIVE_UNIFORMS oder GL_ACTIVE_UNIFORM_MAX_LENGTH.
glGetUniform mit den Argumenten program und dem Namen einer Uniform-Variable.