Warum ich meinen Studenten weiterhin OpenGL ES 3.0 beibringe
I still teach OpenGL ES 3.0
Obwohl die Industrie auf Vulkan und moderne APIs umsteigt, unterrichtet Elias Farhan am SAE Institute Geneva weiterhin OpenGL ES 3.0. Der Grund: Dieselbe C++-Codebasis läuft mit minimalen Anpassungen auf Windows, Linux, Android, Nintendo Switch und via Emscripten sogar im Browser als WebGL2. Statt Boilerplate für Synchronisation und Speicherverwaltung zu kämpfen, können sich die Studierenden auf die eigentliche Computergrafik konzentrieren – und ihre Demos direkt auf die eigene Website stellen.
Ich habe es gewählt, weil es meiner Meinung nach die plattformübergreifendste Version von OpenGL ist: Mit dieser Version kann man dasselbe C++-Programm (mit einigen #ifdef) und dieselben Shader ausführen.
- socalgal2
Persönlich würde ich weder OpenGL ES 3.0 noch irgendein OpenGL unterrichten, weil seine State Machine (https://webgl2fundamentals.org/webgl/lessons/resources/webgl...) und sein grauenhaftes Fehlersystem es schwer machen, Bugs aufzuspüren. Stattdessen würde ich WebGPU unterrichten, da es portabel ist und großartige Fehlermeldungen hat.
Ich bin sicher, die Leute werden Einwände erheben, aber ich würde argumentieren, dass WebGPU leichter zu verstehen ist, bessere Fehler hat, keine State Machine hat, mit C++, Rust, JS/TS und anderen Sprachen funktioniert und näher an moderner GPU-Programmierung dran ist, falls man später zu Metal oder D3D12 oder Vulkan wechseln will.
Außerdem sind OpenGL (und ES) ein Albtraum aus Bugs und Inkompatibilitäten, in die Studierende geraten könnten, die WebGPU behebt.
Allerdings erwähnt der Artikel Apple-Plattformen, wo man ANGLE verwenden kann, falls man zufällig Studierende hat, die dort feststecken.
- hollowonepl
Ich stimme Adam Sawicki zu, dass es nicht mehr so relevant ist, aber ich glaube auch, dass es eine wertvolle Lektion für Technikstudierende ist, zu sehen, woher die Modernität kommt.
Ich persönlich sehe einfach keinen Sinn darin, sich länger als nur einen Monat Einführung darauf zu konzentrieren: Tutorial, ein einfaches Beispiel durchgehen, Grenzen aufzeigen, dann weiter zu Vulkan/WGPU mit der Hintergrundgeschichte, dass es auch DX12 und Metal gibt, die ähnlichen Prinzipien folgen.
- proc0
Schöne Aufschlüsselung. Ich habe mich schon gefragt, warum es so kompliziert ist, auf der GPU zu programmieren im Vergleich zur CPU. Ist es ein Problem des Sprachparadigmas oder vielleicht eine Einschränkung des Hardware-Designs? Ich denke immer daran, wenn ich mir die Grafik-APIs anschaue, besonders Vulkan.
- yunnpp
Ich habe mehr Grafik gelernt, indem ich Software-Rasterizer und Raytracer geschrieben habe, als durch die Nutzung irgendeiner API. Wenn das Ziel ist, speziell GPU-Rendering zu lehren, dann ist OpenGL tatsächlich besser zum Unterrichten geeignet als die anderen. Aber wenn das Ziel ist, Grafik- und Rendering-Konzepte zu lehren, dann sind OpenGL und Co. einfach nur erbärmlich und kontraproduktiv.
- avaer
GLES ist kein schlechter Weg, Grafik zu lehren, aber ich wünschte, es gäbe einen Mittelweg zwischen ihm und VK.
Das Schlimmste an GL ist der mysteriöse globale State, den man nie verstehen wird, ohne die Spezifikation zu studieren. Die Welt könnte eine API gebrauchen, die im Grunde GL ist, aber ohne den globalen versteckten Singleton-Blödsinn (pro Thread!) hinter den Kulissen.