Atualmente, estou indo para a faculdade de ciência da computação. Embora eu pretenda utilizar um mecanismo existente em algum momento para criar um jogo pequeno, meu objetivo agora é aprender os fundamentos: a programação em 3D. Eu já fiz algumas pesquisas sobre a escolha entre DirectX e OpenGL, e o sentimento geral resultante disso foi que, se você escolhe o OpenGL ou o DirectX como sua plataforma de rodinhas, muito do conhecimento é transferível para outra plataforma . Portanto, como o OpenGL é suportado por mais sistemas (provavelmente uma razão boba para escolher o que aprender), decidi que vou aprender o OpenGL primeiro.
Depois que tomei a decisão de aprender o OpenGL, fiz mais algumas pesquisas e descobri sobre uma dicotomia que de alguma forma eu desconhecia todo esse tempo: OpenGL de função fixa versus OpenGL moderno baseado em shader programável. No começo, eu pensei que era uma escolha óbvia que eu deveria optar por aprender OpenGL baseado em shader, já que é o que é mais comumente usado no setor hoje. No entanto, deparei-me com a muito popular Programação de Gráficos 3D Modernos de Aprendizagem, de Jason L. McKesson, localizada aqui: http://www.arcsynthesis.org/gltut/
Eu li os bits introdutórios e, na seção "Sobre este livro", o autor declara:
"Primeiro, muito do que é aprendido com essa abordagem deve ser inevitavelmente abandonado quando o usuário encontra um problema gráfico que deve ser resolvido com a capacidade de programação. A capacidade de programação limpa quase todo o pipeline de funções fixas, para que o conhecimento não seja transferido facilmente".
ao mesmo tempo, também afirma que a funcionalidade fixa fornece uma curva de aprendizado mais fácil e imediata para iniciantes, afirmando:
"Geralmente é considerado mais fácil ensinar programadores de gráficos de neófitos usando o pipeline de função fixa".
Naturalmente, você pode ver por que eu posso estar em conflito sobre qual paradigma aprender: Passo muito tempo aprendendo (e depois desaprendendo) as formas de funcionalidade fixa, ou escolho começar com shaders? Minha principal preocupação é que os shaders programáveis modernos de alguma forma exijam que o programador já entenda o pipeline de função fixa, mas duvido que seja esse o caso.
TL; DR = Como aspirante a programador de gráficos de jogos, é do meu interesse aprender programação em 3D por meio de funcionalidade fixa ou moderna programação baseada em shader?