Ich gehe derzeit zur Hochschule für Informatik. Obwohl ich vorhabe, irgendwann eine vorhandene Engine zu verwenden, um ein kleines Spiel zu erstellen, ist mein Ziel im Moment, die Grundlagen zu erlernen: nämlich 3D-Programmierung. Ich habe bereits einige Nachforschungen bezüglich der Wahl zwischen DirectX und OpenGL angestellt, und das allgemeine Gefühl, das dabei herauskam, war, dass ein Großteil des Wissens auf die andere Plattform übertragbar ist, unabhängig davon, ob Sie OpenGL oder DirectX als Ihre Trainingsradplattform auswählen . Da OpenGL von mehr Systemen unterstützt wird (wahrscheinlich ein dummer Grund, sich für das Erlernen von OpenGL zu entscheiden), habe ich beschlossen, zunächst OpenGL zu lernen.
Nachdem ich mich dazu entschlossen hatte, OpenGL zu lernen, recherchierte ich weiter und fand eine Dichotomie heraus, die mir die ganze Zeit irgendwie unbekannt war: OpenGL mit festen Funktionen im Vergleich zu modernem programmierbarem Shader-basiertem OpenGL. Zuerst dachte ich, dass es eine naheliegende Entscheidung war, Shader-basiertes OpenGL zu erlernen, da dies heute in der Branche am häufigsten verwendet wird. Dann bin ich jedoch auf das sehr beliebte Learning Modern 3D Graphics Programming von Jason L. McKesson gestoßen, das sich hier befindet: http://www.arcsynthesis.org/gltut/
Ich habe die einleitenden Abschnitte durchgelesen und im Abschnitt "Über dieses Buch" heißt es:
"Erstens muss vieles, was mit diesem Ansatz gelernt wird, unweigerlich aufgegeben werden, wenn der Benutzer auf ein Grafikproblem stößt, das mit Programmierbarkeit gelöst werden muss. Die Programmierbarkeit löscht fast die gesamte feste Funktionspipeline, sodass das Wissen nicht einfach übertragen werden kann."
Gleichzeitig wird jedoch auch der Fall angeführt, dass die feste Funktionalität Anfängern eine einfachere und unmittelbarere Lernkurve bietet, indem Folgendes angegeben wird:
"Es wird allgemein als am einfachsten angesehen, Neuling-Grafikprogrammierer unter Verwendung der festen Funktionspipeline zu unterrichten."
Natürlich können Sie sehen, warum es zu Konflikten zwischen mir und dem zu lernenden Paradigma kommen kann: Verbringe ich viel Zeit damit, die Methoden der festen Funktionalität zu lernen (und sie später wieder zu verlernen), oder entscheide ich mich, mit Shadern zu beginnen? Mein Hauptanliegen ist, dass moderne programmierbare Shader es erfordern, dass der Programmierer die Pipeline mit festen Funktionen bereits versteht, aber ich bezweifle, dass dies der Fall ist.
TL; DR = Ist es in meinem Interesse, als aufstrebender Spielgrafik-Programmierer 3D-Programmierung durch feste Funktionalität oder moderne Shader-basierte Programmierung zu erlernen?