Obecnie idę na studia informatyczne. Chociaż w pewnym momencie planuję wykorzystać istniejący silnik do stworzenia małej gry, moim celem jest teraz poznanie podstaw: programowania 3D. Przeprowadziłem już badania dotyczące wyboru między DirectX a OpenGL, a ogólne odczucia, które z tego wynikły, były takie, że niezależnie od tego, czy wybierzesz OpenGL czy DirectX jako platformę kół treningowych, wiele wiedzy można przenieść na inną platformę . Dlatego, ponieważ OpenGL jest obsługiwany przez więcej systemów (prawdopodobnie głupi powód, aby wybrać, czego się uczyć), zdecydowałem, że najpierw nauczę się OpenGL.
Po podjęciu decyzji o nauce OpenGL, przeprowadziłem dalsze badania i dowiedziałem się o dychotomii, której przez jakiś czas nie byłem świadomy: OpenGL o stałej funkcji vs. OpenGL z programowalnym shaderem. Na początku myślałem, że to oczywisty wybór, że powinienem nauczyć się OpenGL opartego na modułach cieniujących, ponieważ jest to obecnie najczęściej używane w branży. Potem jednak natknąłem się na bardzo popularny program do nauki nowoczesnej grafiki 3D autorstwa Jasona L. McKessona, znajdujący się tutaj: http://www.arcsynthesis.org/gltut/
Czytam fragmenty wprowadzające, aw sekcji „O tej książce” autor stwierdza:
„Po pierwsze, wiele z tego, czego się nauczyliśmy dzięki temu podejściu, musi być nieuchronnie porzucone, gdy użytkownik napotka problem graficzny, który musi zostać rozwiązany za pomocą programowalności. Programowalność usuwa prawie cały potok stałej funkcji, więc wiedza nie jest łatwo przenoszona”.
jednocześnie jednocześnie sprawia, że stała funkcjonalność zapewnia łatwiejszą, bardziej natychmiastową krzywą uczenia się dla początkujących, stwierdzając:
„Generalnie uważa się, że najłatwiej jest uczyć programistów grafiki neofitów za pomocą potoku o stałej funkcji”.
Oczywiście możesz zrozumieć, dlaczego mogę się spierać o to, którego paradygmatu się uczyć: czy spędzam dużo czasu ucząc się (a potem ucząc się) sposobów stałej funkcjonalności, czy też zaczynam od shaderów? Moim głównym zmartwieniem jest to, że nowoczesne programowalne shadery w jakiś sposób wymagają od programisty zrozumienia potoku o stałej funkcji, ale wątpię, by tak było.
TL; DR = Jako początkujący programista gier, czy w moim najlepszym interesie jest uczyć się programowania 3D za pomocą stałej funkcjonalności czy nowoczesnego programowania opartego na shaderze?