Şu anda bilgisayar bilimleri için üniversiteye gidiyorum. Mevcut bir motoru küçük bir oyun yaratmak için bir noktada kullanmayı planlasam da, şu anda amacım şu temelleri öğrenmektir: 3D programlama. DirectX ve OpenGL arasında seçim hakkında biraz araştırma yaptım ve bunun genel sonucu, eğitim tekerlekleri platformunuz olarak OpenGL veya DirectX'i seçip seçmemeniz, bilginin çoğunun diğer platforma aktarılabilmesidir. . Bu nedenle, OpenGL daha fazla sistem tarafından desteklendiğinden (muhtemelen ne öğreneceğinizi seçmek için aptalca bir neden), öncelikle OpenGL'yi öğreneceğime karar verdim.
OpenGL'yi öğrenmek için bu kararı verdikten sonra, biraz daha araştırma yaptım ve bunca zamandır farkında olmadığım bir ikilemi öğrendim: sabit işlevli OpenGL ve modern programlanabilir gölgelendirici tabanlı OpenGL. İlk başta, gölgelendirici tabanlı OpenGL öğrenmeyi seçmem gereken bariz bir seçim olduğunu düşündüm, çünkü bugün sektörde en yaygın olarak kullanılan şey budur. Ancak, daha sonra burada bulunan Jason L. McKesson'un çok popüler Learning Modern 3D Grafik Programlamasını tökezledim : http://www.arcsynthesis.org/gltut/
Giriş bitlerini okudum ve "Bu Kitap Hakkında" bölümünde yazar şöyle diyor:
"İlk olarak, bu yaklaşımla öğrenilenlerin çoğu, kullanıcı programlanabilirlik ile çözülmesi gereken bir grafik problemiyle karşılaştığında kaçınılmaz olarak terk edilmelidir. Programlanabilirlik, sabit fonksiyon boru hattının neredeyse tamamını siler, böylece bilgi kolayca aktarılmaz."
aynı zamanda sabit işlevselliğin yeni başlayanlar için daha kolay ve daha hızlı bir öğrenme eğrisi sağladığını da belirtmektedir:
"Sabit fonksiyon boru hattını kullanarak neofit grafik programcılarına öğretmenin genellikle en kolay olduğu düşünülmektedir."
Doğal olarak, hangi paradigmanın öğrenileceği konusunda neden çatışabileceğimi görebilirsiniz: Sabit işlevsellik yollarını öğrenmek için çok fazla zaman harcıyorum (ve daha sonra unlearning) veya gölgelendiricilerle başlamayı seçebilir miyim? Öncelikli endişem, modern programlanabilir gölgelendiricilerin bir şekilde programlayıcının sabit işlevli boru hattını zaten anlamasını gerektirmesidir, ancak durumun bu olduğundan şüpheliyim.
TL; DR = İstekli bir oyun grafik programcısı olarak, sabit işlevsellik veya modern gölgelendirici tabanlı programlama yoluyla 3D programlamayı öğrenmek benim için en iyisidir?