Attualmente sto andando al college per l'informatica. Anche se ho intenzione di utilizzare un motore esistente ad un certo punto per creare un piccolo gioco, il mio obiettivo in questo momento è quello di imparare i fondamenti: vale a dire la programmazione 3D. Ho già fatto alcune ricerche sulla scelta tra DirectX e OpenGL, e il sentimento generale che ne è derivato è stato che, sia che tu scelga OpenGL o DirectX come piattaforma per le ruote di allenamento, molte delle conoscenze sono trasferibili sull'altra piattaforma . Pertanto, poiché OpenGL è supportato da più sistemi (probabilmente una ragione sciocca per scegliere cosa imparare), ho deciso che imparerò prima OpenGL.
Dopo aver preso la decisione di imparare OpenGL, ho fatto ulteriori ricerche e ho scoperto una dicotomia che in qualche modo non ero a conoscenza di tutto questo tempo: OpenGL a funzione fissa contro OpenGL moderno programmabile basato su shader. All'inizio, ho pensato che fosse una scelta ovvia che avrei dovuto scegliere di imparare OpenGL basato su shader poiché è quello che è più comunemente usato oggi nel settore. Tuttavia, mi sono imbattuto nella famosissima programmazione di Learning Modern 3D Graphics di Jason L. McKesson, che si trova qui: http://www.arcsynthesis.org/gltut/
Ho letto i bit introduttivi e nella sezione "Informazioni su questo libro", l'autore afferma:
"In primo luogo, gran parte di ciò che viene appreso con questo approccio deve essere inevitabilmente abbandonato quando l'utente incontra un problema di grafica che deve essere risolto con la programmabilità. La programmabilità cancella quasi tutta la pipeline di funzioni fisse, quindi la conoscenza non si trasferisce facilmente."
ma allo stesso tempo sostiene anche che la funzionalità fissa fornisce una curva di apprendimento più semplice e immediata per i principianti affermando:
"È generalmente considerato più semplice insegnare ai programmatori grafici neofiti utilizzando la pipeline a funzioni fisse".
Naturalmente, puoi capire perché potrei essere in conflitto su quale paradigma imparare: passo molto tempo a imparare (e poi a disimparare) i modi della funzionalità fissa o scelgo di iniziare con gli shader? La mia principale preoccupazione è che i moderni shader programmabili in qualche modo richiedano al programmatore di comprendere già la pipeline a funzione fissa, ma dubito che sia così.
TL; DR = In quanto aspirante programmatore di grafica di giochi, è nel mio interesse imparare la programmazione 3D attraverso la funzionalità fissa o la moderna programmazione basata su shader?