Выберите один из них и продолжайте свой путь.
1. Основы компьютерной графики
† это не книги по OpenGL, они просто используют OpenGL для обучения элементарным концепциям компьютерной графики
Из них моими личными фаворитами являются последние два. Более практичный и, следовательно, увлекательный для начинающих; объяснения не очень загадочные, в отличие от других, более академических книг в списке.
Причина рендеринга в реальном времени опущена, если это не грязная книга; это широкий обзор методов, используемых в промышленности, а не на основах компьютерной графики; Тяжелая теория, а не тяжелая тренировка: новичкам нужно хорошо понимать основы. Даже рассматриваемая теория во многих отношениях довольно высокого уровня.
2. Математические основы
Чтобы быть опытным в компьютерной графике или даже понимать основы, нужно понять приличное количество математических понятий; это требует, чтобы быть удобным в использовании тригонометрии и линейной алгебры. Для этого я рекомендую
- Vector Math для 3D компьютерной графики - безусловно, лучший учебник для начинающих векторов и матриц. Он также интерактивен в том, что в конце каждого раздела есть тестовый вопрос, чтобы проверить и закрепить понимание этой темы.
книги
Из этих математических книг самый интуитивный - первый с большим количеством забавных анекдотов между ними, последний - для фанатов математики с твердым ядром (если вы боитесь символической рвоты, держитесь подальше от нее), хотя это хорошая книга для опытные программисты CG, которым нужна ссылка. То, что находится между ними, действительно хорошо в том смысле, что оно детализирует некоторые вещи, которые другие две (или многие книги в этом отношении) опускают, и в спектре интуитивности и математики, лежащей в основе, находится между ними.
3. Учебники
Просто чтение не закрепляет концепции, поэтому определенно рекомендуется работать. Для этого я нашел эти уроки очень хорошими; большинство из них тоже дают достойное объяснение теории.
Не слишком привязывайтесь к определенной библиотеке или инструменту (например, OpenGL, Direct3D, Metal, Vulkan, WebGL, SDL, Quartz и т. Д.). После того, как вы поймете основные понятия (математика за ними), реализуете их на любом языке, в фреймворке. или библиотека не будет иметь большого значения. Изменится только синтаксис / компилятор, но сами методы остаются прежними.