Die OpenGL ES Shading Language (kurz: GLSL ES) ist eine Programmiersprache, mit der programmierbare Einheiten eines Grafikprozessors, sogenannte Shader, erstellt werden. Diese Shader werden kompiliert, miteinander zu einem fertigen Programm verbunden und mittels OpenGL ES auf eingebetteten Systemen ausgeführt.
OpenGL ES Shading Language | |
---|---|
Basisdaten | |
Erscheinungsjahr: | 2009 |
Entwickler: | Khronos Group |
Aktuelle Version: | 3.00 (11. Juli 2012) |
Beeinflusst von: | OpenGL Shading Language und C |
www.khronos.org/opengles/ |
Sprachmerkmale
GLSL ES basiert auf der OpenGL Shading Language (GLSL) und ist als solches auch eine C-ähnliche Programmiersprache. Im Gegensatz zu GLSL gibt es in der aktuellen Version von GLSL ES nur zwei Shadertypen, einen Vertex- und Fragment-Shader, weniger Texture-Datentypen (Sampler), und bietet wesentlich weniger eingebaute Variablen und Funktionen an. Darüber hinaus kann allerdings mittels Precision-Qualifier die minimale Reichweite und Genauigkeit eines Gleitkomma- oder Ganzzahl-Datentyps bestimmt werden.
Beispiel
Ein Beispiel eines GLSL-ES-Programms aus einem Vertex- und einem Fragment-Shader; das Programm zeichnet Objekte in einer zuvor definierten Farbe:
Vertex-Shader
Dieser Vertex-Shader positioniert den vertex
mithilfe der Matrix modelViewProjectionMatrix
relativ zur Kamera im Raum.
uniform mat4 modelViewProjectionMatrix;
attribute vec4 vertex;
void main()
{
gl_Position = modelViewProjectionMatrix * vertex;
}
Fragment-Shader
Dieser Fragment-Shader setzt die Zeichenfarbe des Fragments auf die von der OpenGL ES-API übergebene Farbe (color
).
precision mediump float;
uniform vec4 color;
void main()
{
gl_FragColor = color;
}