Escolha um de cada um deles e suba.
1. Fundamentos de CG
† estes não são livros do OpenGL, eles apenas usam o OpenGL para ensinar conceitos rudimentares de CG
Destes, meus favoritos pessoais são os dois últimos. Mais prático e, portanto, cativante para o iniciante; as explicações não são muito enigmáticas, ao contrário dos outros livros mais acadêmicos da lista.
Motivo A renderização em tempo real é omitida, não se trata de um livro de sujar as mãos ; é uma ampla pesquisa de técnicas usadas na indústria do que sobre os fundamentos do CG; Teoria pesada do que treino pesado: algo que os iniciantes precisam entender bem o básico. Até a teoria abordada é de alto nível em muitos pontos.
2. Princípios Matemáticos
Para ser proficiente em computação gráfica ou mesmo entender o básico, é necessário compreender uma quantidade decente de conceitos matemáticos; requer que você se sinta confortável em usar trigonometria e álgebra linear. Por isso eu recomendo
- Vector Math for 3D Computer Graphics é de longe o melhor tutorial para iniciantes para vetores e matrizes. Também é interativo, pois no final de cada seção há uma pergunta de teste para verificar e selar a compreensão desse tópico.
Livros
Desses livros de matemática, o mais intuitivo é o primeiro com muitas anedotas engraçadas no meio, o último é para fanáticos da matemática do núcleo duro (se você tem medo de vômito de símbolo, evite-o), embora seja um bom livro para programadores experientes em computação gráfica que precisam de uma referência. O intermediário é realmente bom, pois detalha algumas coisas que os outros dois (ou muitos livros) omitem, e no espectro da intuitividade e da matemática básica que está no meio.
3. Tutoriais
Apenas a leitura não sela os conceitos; portanto, é definitivamente recomendável trabalhar. Por isso, achei esses tutoriais muito bons; a maioria também dá uma explicação decente da teoria.
Não fique muito apegado a uma biblioteca ou ferramenta específica (por exemplo, OpenGL, Direct3D, Metal, Vulkan, WebGL, SDL, Quartzo etc.) Depois de entender os conceitos básicos (matemática por trás deles), implementando-os em qualquer linguagem, estrutura ou biblioteca não seria grande coisa. Apenas a sintaxe / compilador mudaria, mas as próprias técnicas permanecem as mesmas.