glGetUniform: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (glGetTexParameter)
K (Kategorisierung; Wikisyntax für Tabelle)
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glGetUniform =
 
= glGetUniform =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''glGetUniform''' - liefert den Wert einer Uniform-Variable.
 
'''glGetUniform''' - liefert den Wert einer Uniform-Variable.
  
<br>
+
 
 +
 
  
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
Zeile 11: Zeile 13:
 
  procedure '''glGetUniformiv'''(''program'': TGLuint; ''location'': TGLint; ''params'': PGLint);
 
  procedure '''glGetUniformiv'''(''program'': TGLuint; ''location'': TGLint; ''params'': PGLint);
  
<br>
+
 
 +
 
 
== Parameter ==
 
== Parameter ==
<table border=1 rules=all>
+
{| border="1" rules="all"
<tr>
+
! ''program''
<td>''program''</td>
+
| Gibt den Shader an, der die Variable enthält.
<td>Gibt den Shader an, der die Variable enthält.</td>
+
|-
</tr>
+
! ''location''
<tr>
+
| Gibt die Position der Variable an, deren Wert man erfragen will. Diesen Wert kann mittels [[glGetUniformLocation]] beschafft werden.
<td>''location''</td>
+
|-
<td>Gibt die Position der Variable an, deren Wert man erfragen will. Diesen Wert kann mittels [[glGetUniformLocation]] beschafft werden.</td>
+
! ''params''
</tr>
+
| In params werden der Wert bzw. die Werte der Uniform-Variable ausgegeben.
<tr>
+
|}
<td>''params''</td>
+
 
<td>In params werden der Wert bzw. die Werte der Uniform-Variable ausgegeben.</td>
+
 
</tr>
 
</table>
 
  
<br>
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  
'''glGetUniform''' liefert nach ''params'' den Wert/die Werte der angegebenen Uniform-Variable. Der Typ der angegeben Uniform-Variable gibt an, welche Wert zurückgeliefert werden. Wenn die Uniformvariable im Shader als '''boolean''', '''int''' oder '''float''' definiert ist, wird ein einzelner Wert zurückgeliefert. Als '''vec2''', '''ivec2''', '''bev2''' definiert, werden zwei Werte geliefert. Als '''vec3''', '''ivec3''', '''bvec3''' definiert, werden drei Werte zurückgeliefert, und so weiter. Um Variablen abzufragen, die im Shader als Arrays deklariert sind, ruft man [[glGetUniform]] für jedes Element des Arrays auf. Um Variablen abzufragen, die im Shader als Struktur deklariert sind, ruft man [[glGetUniform]] für jedes Feld der Struktur auf. Will man eine Matrix abfragen, wird sie von [[glGetUniform]] in Spaltenfolge ausgegeben.<br>
+
'''glGetUniform''' liefert in ''params'' den Wert/die Werte der angegebenen Uniform-Variable. Der Typ der angegeben Uniform-Variable gibt an, wieviele Werte zurückgeliefert werden. Wenn die Uniformvariable im Shader als '''boolean''', '''int''' oder '''float''' definiert ist, wird ein einzelner Wert zurückgeliefert. Als '''vec2''', '''ivec2''', '''bev2''' definiert, werden zwei Werte geliefert. Als '''vec3''', '''ivec3''', '''bvec3''' definiert, werden drei Werte zurückgeliefert, und so weiter. Um Variablen abzufragen, die im Shader als Arrays deklariert sind, ruft man [[glGetUniform]] für jedes Element des Arrays auf. Um Variablen abzufragen, die im Shader als Struktur (entspr. Delphi-Record) deklariert sind, ruft man [[glGetUniform]] für jedes Feld der Struktur auf. Will man eine Matrix abfragen, wird sie von [[glGetUniform]] spaltenweise zurückgeliefert.
<br>
+
 
 
Die Locations, die den Uniform-Variablen zugewiesen wurden, sind solange unbekannt, bis das Programmobjekt gelinkt wurde. Nachdem das Linken erfolgt ist, kann man den Befehl [[glGetUniformLocation]] zum Herausfinden der Position aufrufen. Dieser Positions-Wert kann dann in [[glGetUniform]] verwendet werden, um den aktuellen Wert der Uniform-Variable abzufragen. Die Index-Werte für Uniform-Variablen bleiben solange die selben, bis wieder gelinkt wird. Das Ganze kann man nur nach erfolgreichem Linken durchführen.
 
Die Locations, die den Uniform-Variablen zugewiesen wurden, sind solange unbekannt, bis das Programmobjekt gelinkt wurde. Nachdem das Linken erfolgt ist, kann man den Befehl [[glGetUniformLocation]] zum Herausfinden der Position aufrufen. Dieser Positions-Wert kann dann in [[glGetUniform]] verwendet werden, um den aktuellen Wert der Uniform-Variable abzufragen. Die Index-Werte für Uniform-Variablen bleiben solange die selben, bis wieder gelinkt wird. Das Ganze kann man nur nach erfolgreichem Linken durchführen.
  
 
== Hinweise ==  
 
== Hinweise ==  
glGetUniform wird nur ab OpenGL - Version2.0 oder höher unterstützt
+
'''glGetUniform''' wird nur ab OpenGL - Version2.0 oder höher unterstützt
  
 
Wenn ein Fehler auftritt, wird der Inhalt von ''params'' nicht verändert.
 
Wenn ein Fehler auftritt, wird der Inhalt von ''params'' nicht verändert.
Zeile 42: Zeile 42:
  
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
GL_INVALID_VALUE wird zurückgeliefert, wenn ''program'' kein von OpenGL erzeugter Wert ist.
+
'''GL_INVALID_VALUE''' wird zurückgeliefert, wenn ''program'' kein von OpenGL erzeugter Wert ist.
 +
 
 +
'''GL_INVALID_OPERATION''' wird zurückgeliefert, wenn ''program'' kein Programmobjekt (Shader) ist.
 +
 
 +
'''GL_INVALID_OPERATION''' wird zurückgeliefert, wenn ''program'' nicht erfolgreich gelinkt wurde.
  
GL_INVALID_OPERATION wird zurückgeliefert, wenn ''program'' kein Programmobjekt (Shader) ist.
+
'''GL_INVALID_OPERATION''' wird zurückgeliefert, wenn ''location'' nicht zu einer gültigen Uniform-Variablenlocation für das gelieferte Programmobjekt gehört.
  
GL_INVALID_OPERATION wird zurückgeliefert, wenn ''program'' nicht erfolgreich gelinkt wurde.
+
'''GL_INVALID_OPERATION''' wird zurückgeliefert, wenn '''glGetUniform''' innerhalb eines [[glBegin]]-[[glEnd]]-Blocks aufgerufen wird.
  
GL_INVALID_OPERATION wird zurückgeliefert, wenn ''location'' nicht zu einer gültigen Uniform-Variablenlocation für das gelieferte Programmobjekt gehört.
 
  
GL_INVALID_OPERATION wird zurückgeliefert, wenn '''glGetUniform''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.
 
  
<br>
 
  
  
Zeile 68: Zeile 69:
 
[[glCreateProgram]], [[glLinkProgram]], [[glUniform]]
 
[[glCreateProgram]], [[glLinkProgram]], [[glUniform]]
  
[[Kategorie:GL|GetTexParameter]]
+
[[Kategorie:GL|GetUniform]]
 +
[[Kategorie:GL2.0|GetUniform]]

Aktuelle Version vom 27. Juli 2011, 18:07 Uhr

glGetUniform

Name

glGetUniform - liefert den Wert einer Uniform-Variable.



Delphi-Spezifikation

procedure glGetUniformfv(program: TGLuint; location: TGLint; params: PGLfloat);
procedure glGetUniformiv(program: TGLuint; location: TGLint; params: PGLint);


Parameter

program Gibt den Shader an, der die Variable enthält.
location Gibt die Position der Variable an, deren Wert man erfragen will. Diesen Wert kann mittels glGetUniformLocation beschafft werden.
params In params werden der Wert bzw. die Werte der Uniform-Variable ausgegeben.



Beschreibung

glGetUniform liefert in params den Wert/die Werte der angegebenen Uniform-Variable. Der Typ der angegeben Uniform-Variable gibt an, wieviele Werte zurückgeliefert werden. Wenn die Uniformvariable im Shader als boolean, int oder float definiert ist, wird ein einzelner Wert zurückgeliefert. Als vec2, ivec2, bev2 definiert, werden zwei Werte geliefert. Als vec3, ivec3, bvec3 definiert, werden drei Werte zurückgeliefert, und so weiter. Um Variablen abzufragen, die im Shader als Arrays deklariert sind, ruft man glGetUniform für jedes Element des Arrays auf. Um Variablen abzufragen, die im Shader als Struktur (entspr. Delphi-Record) deklariert sind, ruft man glGetUniform für jedes Feld der Struktur auf. Will man eine Matrix abfragen, wird sie von glGetUniform spaltenweise zurückgeliefert.

Die Locations, die den Uniform-Variablen zugewiesen wurden, sind solange unbekannt, bis das Programmobjekt gelinkt wurde. Nachdem das Linken erfolgt ist, kann man den Befehl glGetUniformLocation zum Herausfinden der Position aufrufen. Dieser Positions-Wert kann dann in glGetUniform verwendet werden, um den aktuellen Wert der Uniform-Variable abzufragen. Die Index-Werte für Uniform-Variablen bleiben solange die selben, bis wieder gelinkt wird. Das Ganze kann man nur nach erfolgreichem Linken durchführen.

Hinweise

glGetUniform wird nur ab OpenGL - Version2.0 oder höher unterstützt

Wenn ein Fehler auftritt, wird der Inhalt von params nicht verändert.


Fehlermeldungen

GL_INVALID_VALUE wird zurückgeliefert, wenn program kein von OpenGL erzeugter Wert ist.

GL_INVALID_OPERATION wird zurückgeliefert, wenn program kein Programmobjekt (Shader) ist.

GL_INVALID_OPERATION wird zurückgeliefert, wenn program nicht erfolgreich gelinkt wurde.

GL_INVALID_OPERATION wird zurückgeliefert, wenn location nicht zu einer gültigen Uniform-Variablenlocation für das gelieferte Programmobjekt gehört.

GL_INVALID_OPERATION wird zurückgeliefert, wenn glGetUniform 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

glGetUniformLocation mit den Argumenten program und dem Namen einer Uniform-Variable.

glIsProgram


Siehe auch

glCreateProgram, glLinkProgram, glUniform