<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://wiki.delphigl.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thevoid</id>
		<title>DGL Wiki - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.delphigl.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thevoid"/>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php/Spezial:Beitr%C3%A4ge/Thevoid"/>
		<updated>2026-04-29T23:06:31Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=glUniform&amp;diff=24625</id>
		<title>glUniform</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=glUniform&amp;diff=24625"/>
				<updated>2010-01-18T22:03:46Z</updated>
		
		<summary type="html">&lt;p&gt;Thevoid: Schlimmen Übersetzungsfehler, der mir einen halben Tag an Debugging eingebracht hat, verbessert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= glUniform =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name ==&lt;br /&gt;
'''glUniform1f''', '''glUniform2f''', '''glUniform3f''', '''glUniform4f''', &amp;lt;br&amp;gt;&lt;br /&gt;
'''glUniform1i''', '''glUniform2i''', '''glUniform3i''', '''glUniform4i''', &amp;lt;br&amp;gt;&lt;br /&gt;
'''glUniform1fv''', '''glUniform2fv''', '''glUniform3fv''', '''glUniform4fv''',&amp;lt;br&amp;gt; &lt;br /&gt;
'''glUniform1iv''', '''glUniform2iv''', '''glUniform3iv''', '''glUniform4iv''',&amp;lt;br&amp;gt;&lt;br /&gt;
'''glUniformMatrix2fv''', '''glUniformMatrix3fv''', '''glUniformMatrix4fv''' - Geben den Wert einer Uniform-Variable für das aktuelle Programmobjekt an.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 procedure '''glUniform1f'''(''location'' : GLint; &lt;br /&gt;
                             ''v0'' : GLfloat);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform2f'''(''location'' : GLint; &lt;br /&gt;
                             ''v0'' : GLfloat; ''v1'' : GLfloat);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform3f'''(''location'' : GLint; &lt;br /&gt;
                             ''v0'' : GLfloat; ''v1'' : GLfloat; ''v2'' : GLfloat);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform4f'''(''location'' : GLint; &lt;br /&gt;
                             ''v0'' : GLfloat; ''v1'' : GLfloat; ''v2'' : GLfloat; ''v4'' : GLfloat);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform1i'''(''location'' : GLint; &lt;br /&gt;
                             ''v0'' : GLint);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform2i'''(''location'' : GLint; &lt;br /&gt;
                             ''v0'' : GLint; ''v1'' : GLint);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform3i'''(''location'' : GLint; &lt;br /&gt;
                             ''v0'' : GLfloat; ''v1'' : GLint; ''v2'' : GLint);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform4i'''(''location'' : GLint; &lt;br /&gt;
                             ''v0'' : GLint; ''v1'' : GLint; ''v2'' : GLint; ''v4'' : GLint);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''location'' &lt;br /&gt;
| Gibt den Speicherort der Uniform-Variable an, die verändert werden soll.&lt;br /&gt;
|-&lt;br /&gt;
! ''v0, v1, v2, v3'' &lt;br /&gt;
| Geben die neuen Werte für die zu verändernde Varibale an.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 procedure '''glUniform1fv'''(''location'' : GLint; ''count'' : GLsizei; '''const''' ''value'' : PGLfloat);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform2fv'''(''location'' : GLint; ''count'' : GLsizei; '''const''' ''value'' : PGLfloat);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform3fv'''(''location'' : GLint; ''count'' : GLsizei; '''const''' ''value'' : PGLfloat);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform4fv'''(''location'' : GLint; ''count'' : GLsizei; '''const''' ''value'' : PGLfloat);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform1iv'''(''location'' : GLint; ''count'' : GLsizei; '''const''' ''value'' : PGLint);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform2iv'''(''location'' : GLint; ''count'' : GLsizei; '''const''' ''value'' : PGLint);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform3iv'''(''location'' : GLint; ''count'' : GLsizei; '''const''' ''value'' : PGLint);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniform4iv'''(''location'' : GLint; ''count'' : GLsizei; '''const''' ''value'' : PGLint);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''location'' &lt;br /&gt;
| Gibt den Speicherort der Uniform-Variable an, die verändert werden soll.&lt;br /&gt;
|-&lt;br /&gt;
! ''count''&lt;br /&gt;
| Gibt die Anzahl der Elemente an, die verändert werden sollen. Sollte 1 sein, wenn die angesteuerte Uniform-Variable kein Array ist, und 1 oder höher, wenn es sich um ein Array handelt)&lt;br /&gt;
|-&lt;br /&gt;
! ''value'' &lt;br /&gt;
| Gibt einen Pointer auf ein Array mit ''count'' Werten an, das verwendet wird, um die gegebene Uniform-Variable zu aktualisieren.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delphi-Spezifikation ==&lt;br /&gt;
 procedure '''glUniformMatrix2fv'''(''location'' : GLint; ''count'' : GLsizei; ''transpose'' : GLboolean; '''const''' ''value'' : PGLfloat);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniformMatrix3fv'''(''location'' : GLint; ''count'' : GLsizei; ''transpose'' : GLboolean; '''const''' ''value'' : PGLfloat);&lt;br /&gt;
 &lt;br /&gt;
 procedure '''glUniformMatrix4fv'''(''location'' : GLint; ''count'' : GLsizei; ''transpose'' : GLboolean; '''const''' ''value'' : PGLfloat);&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; rules=&amp;quot;all&amp;quot;&lt;br /&gt;
! ''location'' &lt;br /&gt;
| Gibt den Speicherort der Uniform-Variable an, die verändert werden soll.&lt;br /&gt;
|-&lt;br /&gt;
! ''count''&lt;br /&gt;
| Gibt die Anzahl der Matrizen an, die verändert werden sollen. Sollte 1 sein, wenn die angesteuerte Uniform-Matrixvariable kein Array ist, und 1 oder höher, wenn es sich um ein Array, also mehrere Matrizen, handelt)&lt;br /&gt;
|-&lt;br /&gt;
! ''transpose''&lt;br /&gt;
| Gibt an, ob die Matrix transponiert werden soll, wenn die Werte in die Uniform-Variable geladen werden.&lt;br /&gt;
|-&lt;br /&gt;
! ''value'' &lt;br /&gt;
| Gibt einen Pointer auf ein Array mit ''count'' Werten an, das verwendet wird, um die gegebene Uniform-Variable zu aktualisieren.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Beschreibung == &lt;br /&gt;
[[glUniform]] modifiziert den Wert einer Uniform-Variable oder eines Uniform-Arrays. Der Ablageort der zu verändernden Uniform-Variable wird mit ''location'' angegeben, das einen von [[glGetUniformLocation]] zurückgelieferten Wert zugewiesen bekommen sollte. [[glUniform]] arbeitet mit dem Programmobjekt, das durch den Aufruf von [[glUseProgram]] aktuell ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Befehle '''glUniform'''{'''1'''|'''2'''|'''3'''|'''4'''}{'''f'''|'''i'''} werden verwendet, den Wert der durch ''location'' angegebenen Uniform-Variable zu verändern. Die im Befehl spezifizierte Nummer sollte der Anzahl der Komponenten im Datentyp der Uniform-Variable entsprechen (z.B. 1 für GLfloat, GLint, GLboolean; 2 für vec2, ivec2, bvec2; etc.). Das Suffix '''f''' gibt an, dass Fließkomma-Werte eingeben werden müssen. Das Suffix '''i''' gibt an, dass Integer-Werte eingegeben werden müssen. Die i-Versionen dieser Funktion sollten verwendet werden, um Uniform-Variablen vom Typ int, ivec2, ivec3 und ivec4 anzusteuern. Für Bool`sche Veriablen können sowohl die i- als auch die f-Versionen verwendet werden. 0 bzw 0.0 bedeuten False, alle anderen Werte True.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Alle aktiven Uniform-Variablen im Programmobjekt werden mit 0 initialisiert, wenn das Programmobjekt erfolgreich gelinkt wurde. Sie behalten diesen Wert, bis '''glUniform''' aufgerufen wird. Nach erneutem, erfolgreichem Linken haben die Variablen wieder den Wert 0.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Befehle '''glUniform'''{'''1'''|'''2'''|'''3'''|'''4'''}{'''f'''|'''i'''}v können verwendet werden, um eine einzelne Uniform-Variable oder ein Uniform-Array zu modifizieren. Diese Befehle wenden ''count'' und einen Pointer auf die zu ladenden Variablen an. 1 sollte an ''count'' übergeben werden, wenn eine einzelne Uniform-Variable verändert werden soll, und höhere Werte für entsprechend mehr Variablen. Wenn man ''n'' Elemente an der Position ''m'' innerhalb eines Uniform-Arrays ladet, werden die Elemente ''m + n - 1'' im Arrays mit neue Werten ersetzt. Wenn ''m +  n - 1'' größer als das Arrays ist, dann werden alle Elemente, die über das Array hinausgehen, ignoriert. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Bei Uniform-Arrays wird für jedes Element des Arrays angenommen, dass es vom Typ des verwendeten Kommandos ist (z.B. kann man glUniform3f oder glUniform3fv verwenden, um ein Uniform-Arrays vom Typ vec3 zu laden). Die Anzahl der Elemente, die von der Uniform-Variable verändert werden, wird mit ''count'' angegeben.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Befehle '''glUniformFloatMatrix'''{'''2'''|'''3'''|'''4'''}fv werden verwendet, um eine Matrix oder ein Array von Matrizen zu verwenden. Die im Befehl angegebene Ziffer gibt die Dimensionalität der Matrix an. Die Ziffer 2 weist zum Beispiel auf eine 2 x 2 Matrix hin, die also vier Werte beinhaltet. Wenn ''transpose'' auf GL_FALSE steht, dann wird angenommen, dass die Matrizen in Spalten verarbeitet werden. Andernfalls werden die Matrizen reihenweise verarbeitet. ''count'' gibt die Anzahl der eingegebenen Matrizen an. Bei einer einzelnen Matrix ist ''count'' 1, bei mehreren Matrizen entsprechend höher.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
[[glUniform]] ist für verfügbar, wenn die OpenGL-Version 2.0 oder höher ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''glUniform1i''' und '''glUniform1iv''' sind die einzigen Funktionen, die verwendet werden können, um Uniform-Variablen zu laden, die vom Typ ''sampler'' sind. Wenn man versucht, ''sampler'' mit einr anderen Funktion zu laden, erhält man den Fehler '''GL_INVALID_OPERATION'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn ''count'' größer als 1 ist und die entsprechende Uniform-Variable kein Array ist, wird ein '''GL_INVALID_OPERATION'''-Fehler generiert und die Uniform-Variable wird nicht verändert.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im Gegensatz zu den vorhergehenden Ausnahmen wird ein '''GL_INVALID_OPERATION'''-Fehler generiert, wenn der Typ und die Größe der Uniform-Variable im Shader nicht dem Typ und der Größe entsprechen, die mit der Funktion angeben wurden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn ''location'' einen Wert ungleich -1 hat, und trotzdem keiner gültigen Uniform-Variable entspricht, wird ein Fehler erzeugt und es werden keine Veränderungen vorgenommen. Wenn ''location'' gleich -1 ist, dann werden die angegebenen Werte ohne Fehler ignoriert und keine Variable verändert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen ==&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn es kein aktives Programmobjekt gibt. &lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn die Größe der Uniform-Variable im Shader nicht mit dem entsprechenden Befehl übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn einer der Integer-Verionen dazu verwendet wird, eine Variable vom Typ float, vec2, vec3, vec4 oder eines Arrays dieses Typs zu verändern. Gleiches gilt für das verändern von int-Variablen, die nicht mit Befehlen vom Typ glUniform*f beschrieben werden können.&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn ''location'' ein ungültiger Ort für das aktuelle Programmobjekt ist und ''location'' gleichzeitig -1 ist.&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_VALUE''' wird generiert, wenn ''count'' kleiner als 0 ist.&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn ''count'' größer als 1 ist und die entsprechende Uniform-Variable kein Array ist.&lt;br /&gt;
&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert, wenn ein ''sampler'' mit einem anderen Befehl als '''glUniform1i''' und '''glUniform1iv''' geladen wird.&lt;br /&gt;
&lt;br /&gt;
'''GL_FEHLER''' wird generiert wenn....&amp;lt;br&amp;gt;&lt;br /&gt;
'''GL_INVALID_OPERATION''' wird generiert wenn glUniform innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Zugehörige Wertrückgaben ==&lt;br /&gt;
[[glGet]] mit Token [[glGet#GL_CURRENT_PROGRAM|GL_CURRENT_PROGRAM]]&lt;br /&gt;
&lt;br /&gt;
[[glGetActiveUniform]] mit dem Handle eines Programmobjekts und dem Index einer aktuellen Uniform-Variable.&lt;br /&gt;
&lt;br /&gt;
[[glGetUniform]] mit dem Handle eines Programmobjekts und dem Speicherort einer aktuellen Uniform-Variable.&lt;br /&gt;
&lt;br /&gt;
[[glGetUniformLocation]] mit dem Handle eines Programmobjekts und dem Namen einer aktuellen Uniform-Variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[glLinkProgram]], [[glUseProgram]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:GL|Uniform]]&lt;/div&gt;</summary>
		<author><name>Thevoid</name></author>	</entry>

	</feed>