glGetUniformLocationARB
Inhaltsverzeichnis
glGetUniformLocationARB
Name
glGetUniformLocationARB - Liefert den Ablageort einer Uniform-Variable
Delphi-Spezifikation
function glGetUniformLocationARB(program : GLhandleARB; const name : PGLcharARB) : GLint
Parameter
program | Gibt das Handle des abzufragenden Programmobjekts an. |
---|---|
name | Zeigt auf einen 0-terminierten String, der den Namen der Uniform-Variable enthält, deren Ablageort abgefragt werden soll. |
Beschreibung
glGetUniformLocationARB liefert einen Integer-Wert, der auf den Ablageort im Speicher verweist. Der Array-Element-Operator "[]" und der Struktur-Operator "." kann in name verwendet werden, um Elemente innerhalb eines Arrays oder Felder innherhalb einer Struktur auszuwählen. Leerzeichen sind nicht erlaubt. Den Ablageort erhält man, wenn man den name des Arrays - optional gefolgt von "[0]" - verwendet. Das Ergebnis dieser Operatoren darf keine andere Struktur, kein ein Array von Strukturen und auch keine Unterkomponente eines Vektors oder einer Matrix. Wenn die Uniform-Variable name nicht im Programmobjekt zu finden ist, oder name mit dem reservierten Präfix "gl_" beginnt, wird das Ergebnis -1 zurückgeliefert.
Der aktuelle Ablageort vom Uniform-Variablen im Speicher ist solange unbekannt, bis das Programmobjekt gelinkt wurde. Ist das Linken einmal durchgeführt worden, dann kann der Befehl glGetUniformLocationARB dazuverwendet werden, den Ablageort der Uniform-Variable zu erfahren. Dieser Ablageort kann in glUniformARB dazu verwendet werden, den Wert einer Uniform-Variable zu setzen, oder in glGetUniformARB, um den aktuellen Wert einer Uniform-Variable abzufragen. Wenn ein Programmobjekt erfolgreich gelinkt wirde, bleiben die Speicherorte von Uniform-Variablen fest (und ihre Werte können abgefragt werden), bis das nächste mal gelinkt wird. glGetUniformLocationARB kann dazu verwendet werden, ein Programmobjekt abzufragen, unabhängig davon, ob das Programmobjekt im Moment in Verwendung ist.
Fehlermeldungen
GL_INVALID_VALUE wird generiert, wenn program kein von OpenGL erzeugtes Handle ist.
GL_INVALID_OPERATION wird generiert, wenn program nicht vom Typ GL_PROGRAM_OBJECT_ARB ist.
GL_INVALID_OPERATION wird generiert, wenn program nicht erfolgreich gelinkt wurde.
GL_INVALID_OPERATION wird generiert, wenn name keinen Speicherort im aktuellen Programmobjekt hat.
GL_INVALID_OPERATION wird generiert wenn glGetUniformLocationARB innerhalb eines glBegin-glEnd Blocks aufgerufen wird.
Siehe auch
glGetActiveUniformARB, glGetUniformARB, glLinkProgramARB, glUniformARB