Zum Inhalt springen

OpenGL ES Shading Language

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. November 2012 um 01:20 Uhr durch Stefan8410 (Diskussion | Beiträge) (www.khronos.org/opengles/). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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/

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 einen fertigen Programm verbunden, und mittels OpenGL ES auf eingebetteten Systemen ausgeführt.

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