Frischzellenkur

Die Version 4.0 des plattformunabhängigen Grafikstandards OpenGL bietet Tessellation und erschließt weitere Fähigkeiten von Grafikchips der DirectX-11-Generation. OpenGL 3.3 erweitert die Unterstützung für ältere Grafikhardware.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 5 Min.
Von
  • Manfred Bertuch

Das OpenGL ARB (Architecture Review Board), das innerhalb der Khronos Group für die Weiterentwicklung des Grafikstandards verantwortlich ist, präsentiert nur sechs Monate nach OpenGL 3.2 zwei neue Fassungen der Grafikbibliothek. OpenGL 4.0 konkurriert mit DirectX 10.1 sowie DirectX 11 und bietet unter anderem Funktionen zum Zerlegen von Polygonen (Tessellation), um etwa Objekte mit fließenden, organischen Formen oder Fugen in Mauern durch eine höhere Polygon-Zahl besser darstellen zu können.

Die Tessellation-Funktionen von OpenGL 4.0 kontrollieren wie unter DirectX 11 drei separate Stufen. Der eigentlichen Tessellation-Einheit (Tessellation Primitive Generator) ist der Tessellation-Control-Shader vorgelagert. Wie der Hull-Shader in DirectX 11 gibt er den Grad der Zerlegung vor und berechnet Kontrollpunkte zur Steuerung der Krümmung. Nach der Zerlegung durchlaufen die Polygone schließlich noch den Tessellation-Evaluation-Shader (DirectX 11: Domain-Shader). Er bildet aus den neu geschaffenen Polygonen die Oberflächen mit den gewünschten Eigenschaften (siehe c’t 9/10, S. 106).

Die Versionsnummern vor dem Punkt markieren die Einführung neuer Konzepte im Funktionsumfang von OpenGL.

Eine andere wichtige Neuerung von OpenGL 4.0 sind Shader-Subroutinen, mit denen man verschiedene Situationen in einem Shader-Programm abdecken kann. Das API wählt erst zur Laufzeit dynamisch das benötigte Unterprogramm aus. Enthält eine Szene beispielsweise verschiedene Lichtquellen- und Materialtypen, mussten OpenGL-Programmierer bislang für jede Lichtquellen-Material-Kombination einen spezialisierten Shader oder einen komplexen „Übershader“ einsetzen, was die Übersicht bezüglich der Shader-Bibliothek erschwerte.

Ebenfalls neu hinzugekommen sind Cube Map Arrays, die es beispielsweise erlauben, mit einem einzigen Zeichenbefehl (Draw Call) die Schatten von mehreren Punktlichtquellen zu berechnen. Eine weitere Neuerung von OpenGL 4.0 ist ein Zugriffsmechanismus auf das Multisample Rendering, um Kantenfilterartefakte zu vermeiden. Schließlich verbessert OpenGL 4.0 die Zusammenarbeit mit dem GPGPU-Ableger OpenCL, dessen Rechenergebnisse die Grafikprozessoren nun ohne Zutun der CPU anzeigen können. Die Shader-Sprache GLSL trägt jetzt die Versionsnummer 4.0 und wurde an die Fähigkeiten der neusten Grafikchips angepasst. Sie bietet jetzt doppelte Gleitkomma-Genauigkeit, neue Integer-Rechenarten sowie zusätzliche Gleitkomma-Zahlenformate.

OpenGL 3.3 und die zugehörige Sprachversion GLSL 3.3 ist auf Grafikkarten mit einem DirectX-10-Chip abgestimmt. Die Updates enthalten viele Detailverbesserungen, aber auch dringend erwartete Features wie „Sampler Objects“. Sie entkoppeln Texturen und Sampler-States, wodurch sich beispielsweise verschiedene Filterarten auf ein und dieselbe Textur anwenden lassen. Ein weiteres Feature sind „Instanced Arrays“, mit denen man Daten für mehrfach darzustellende Objekte (Instanced Rendering) platzsparend speichern kann. Die 4.0-Version ist aufwärtskompatibel und enthält die mit OpenGL 3.3 eingeführten Funktionen ebenfalls.

Sowohl OpenGL 4.0 als auch OpenGL 3.3 wurden in einem Core-Profil und einem Compatibility-Profil verabschiedet. Während letzteres alle Funktionen der Vorgängerversionen enthält und bestehende Anwendungen uneingeschränkt unterstützt, fehlen im Core-Profil eine Reihe veralteter Funktionen, wodurch es übersichtlicher und leichter benutzbar ist.

AMD und Nvidia haben bereits Preview- beziehungsweise Beta-Treiber für OpenGL 3.3 und OpenGL 4.0 veröffentlicht, wobei sich zumindest Nvidia deutlich zum Compatibility-Profil bekennt. Es sei zu diesem Zeitpunkt noch wichtiger, die Treiber zu der großen Zahl der bestehenden OpenGL-Anwendungen kompatibel zu halten.

Auch wenn OpenGL bei CAD und wissenschaftlichen Anwendungen nach wie vor fest etabliert ist, hat es im künstlerischen und DCC-Bereich (Digital Content Creation) die Konkurrenz durch das modernere DirectX schon kräftig zu spüren bekommen. 3D-Design- und Modelling-Software hat ihren Schwerpunkt schon vor Jahren von OpenGL auf DirectX verlagert. Das OpenGL ARB ist daher sichtlich bemüht, mit dem Innovationstempo von DirectX mitzuhalten und veröffentlicht jetzt schon zum vierten Mal nach nur sechs Monaten ein neues Release. Auch durch die Einführung des von veralteten Funktionen befreiten Core-Profils versucht man, das konservative Image abzuschütteln und neue Entwickler zu gewinnen. Jedoch geht vielen Programmierern die Entrümplung nicht weit genug. Vor einer weitreichenden Renovierung und dem damit verbundenen Redesign des API schreckt das Architecture Board nach wie vor zurück. In den Foren überwiegt allerdings das Lob über die raschen Updates.

Das große Plus von OpenGL ist natürlich seine Portabilität. Es ist nicht nur unter Windows, sondern auch auf Linux- und Mac-OS-Rechnern sowie in der reduzierten Ausführung OpenGL ES auf vielen Smartphones und PDAs verfügbar. Außer auf der Xbox 360 laufen Varianten von OpenGL auch auf praktisch allen Spielekonsolen. Mit WebGL ist zudem eine Version für Web-Anwendungen in Arbeit. Eine weitere Stärke von OpenGL ist seine weit zurückreichende Kompatibilität, die besonders professionelle Anwender schätzen, da sie ihre Investitionen schützen wollen. Doch diese angestammten Pfründe sichern dem altehrwürdigen Standard allenfalls eine Randexistenz. Das Architecture Board ist sich anscheinend bewusst, dass man auf keinen Fall in das betuliche Tempo vergangener Tage zurückfallen darf. (mfi)