Um Interaktionsparadigmen testen zu können, brauche ich Prototypen – Prototypen, die zumindest die Grundfunktionen eines Vektorgrafikeditors (VGE) beherrschen müssen. Das Fundament aller VGE ist die Darstellung von Bézierkurven; doch welche Mechanismen sind für diesen Vorgang zuständig?
GPU – Die Grafikkarte
Der Großteil moderner Computer (Smartphones inkludiert) verfügt neben der flexiblen CPU (Central Processing Unit) über einen dedizierten Grafik-Prozessor: Die GPU (Graphics Processing Unit) ist für Methoden und Operationen optimiert, die sich in der Grafikprogrammierung als nützlich erwiesen haben – beispielsweise Fließkomma-Berechnungen, lineare Algebra und Parallelisierung.
krcht… CPU an GPU, bitte kommen! …krcht
Um die GPU anzuzapfen, bieten Betriebssysteme unterschiedliche Schnittstellen: Windows hat DirectX, Apple hat CoreGraphics und Metal. Glücklicherweise gibt es eine API (Application Programming Interface), die sowohl unter Windows als auch unter macOS, iOS, Android und Linux verfügbar ist.
Apple, Microsoft und zahlreiche andere Tech-Giganten haben sich auf Ruf der Khronos Group versammelt und auf einen gemeinsamen Standard geeinigt, der plattformübergreifende Grafikprogrammierung ermöglichen soll: OpenGL. Dieser Standard existiert schon seit rund zwanzig Jahren und erfreut sich weitreichender Unterstützung.
Die letzte Revision des Standards, OpenGL 4.6, erschien im Juli 2017. Mittlerweile existiert bereits ein Nachfolger, der noch effizientere Programmierung ermöglichen soll: Vulkan. Allerdings hat sich Apple bisher noch nicht um Vulkans Implementierung bemüht, weswegen die API (nativ) lediglich unter Windows, Android und Linux verfügbar ist.
Und jetzt?
Um möglichst stabile, plattformübergreifende Prototypen kreieren zu können, fokussiere ich mich auf das gut gereifte OpenGL. Also – nicht ganz. Da mich der komplexe Workflow kompilierter Software vermutlich verlangsamen würde, greife ich auf WebGL (1.0) zurück – so kann ich mittels JavaScript mit der GPU kommunizieren. Der resultierende Code gleicht in seiner Struktur jenem Code, der für OpenGL-Anwendungen notwendig wäre, lässt sich aber ohne Umweg im Browser ausführen.
Im nächsten Post geht es um die Grundlagen von WebGL 1.0.