OpenGL ES Shading Language

Shader-Sprache von OpenGL ES
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. November 2012 um 11:33 Uhr durch Pico31 (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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 (position) mithilfe der Matrix modelViewProjectionMatrix relativ zur Kamera im Raum.

  uniform mat4 modelViewProjectionMatrix;
  attribute vec4 position;

  void main() 
  {
    gl_Position = modelViewProjectionMatrix * position;
  }

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;
  }