next up previous contents
Next: Praxis: Linken von GLSL Up: Datentypen und Variablen Previous: Datentypen   Contents


Variablen

Einfache Variablen können wie gewohnt deklariert werden
\begin{lstlisting}[name=einfache Variablen in GLSL]
float foo, bar;
int baz = 5;
bool bla = false;
\end{lstlisting}

Allerdings gibt es in GLSL - anders als zum Beispiel in C - keine automatischen Typecasts beim initialisieren von Variablen, stattdessen wird stark auf das Konzept von Konstruktoren zurückgegriffen, dem von C++ nicht unähnlich:
\begin{lstlisting}[name=Strukturen in GLSL Shadern]
float a = 2; // falsch - kei...
...c2 d = vec2(.5f, 1.0f); // korrekt
vec3 e = (d, c); // korrekt
\end{lstlisting}

Wie leicht zu sehen ist gibt es eine weite Reihe von Konstruktoren, dies gilt insbesondere für Matrizen. Diese sollen allerdings an dieser Stelle nicht alle aufgeführt werden.

Für Variablen gibt es außerdem einige Qualifier die hier kurz erläutert werden sollen:

const
- Kompilierzeitkonstante, kann nicht geändert werden
uniform
- globale Variable welche von der Applikation an den Shader übergeben wird, kann in Vertex und Fragment Shadern gelesen, aber nicht geschrieben werden.
attribute
- globale Variable welche von OpenGL an den Vertex Shader übergeben wird, kann nur in Vertex Shadern gelesen, aber nicht verändert werden.
varying
- Variable zum Austausch interpolierter Daten vom Vertex Shader zum Fragment Shader.



2005-10-25 Michael Bayer - nightspawn.com