Необходимая подготовка по программированию
Вообще говоря, читателю следовало бы иметь по меньшей мере опыт одного семестра написания компьютерных программ на языках С, С++ или Java. Значительная часть программирования графики сводится к непосредственному переводу геометрических соотношений в код и, следовательно, непосредственно использует переменные, функции, массивы, циклы и тестирование, что является общим для всех языков. На протяжении всей книги используется С++, однако большая часть материала будет близка и тем, кто знаком только с С.
Читателю очень поможет опыт работы со структурами (structs) на С или с классами на С++. Они используются для охвата достаточно сложной структуры некоторых графических объектов, участвующих в сцене, когда объект (скажем, замок или самолет) состоит из множества частей, которые, в свою очередь, сами состоят из сложных элементов. Желателен (но не обязателен) также некоторый опыт работы с элементарными связными структурами данных, такими как связные списки (linked lists) или деревья.
Читателю, знающему С, но не С++, придется познакомиться с основами объектно-ориентированного программирования. Мы определим несколько полезных классов, таких как Window (окно), Mesh (сетка), Scene (сцена), Camera (видеокамера) и Texture (текстура), и покажем, почему они являются столь удобными и полезными. Некоторые признаки объектно-ориентированного программирования, как, например, наследование и полиморфизм, используются лишь для того, чтобы облегчить работу программиста, однако мы не уделяем чисто объектно-ориентированному подходу слишком большого внимания.
Философия книги После выхода первого издания книга была полностью реорганизована и переписана заново, однако при этом была сохранена ее основная философия: изучать компьютерную графику - значит создавать ее: чтобы полностью постичь то, что происходит, необходимо писать и прогонять реальные программы. Главная задача книги состоит в том, чтобы показать читателям, как преобразовать отдельную проектную «задачу» сначала в основные геометрические компоненты, затем найти для выбранных объектов соответствующее математическое представление и, наконец, перевести это представление в надлежащий алгоритм и программный код. Читатели начинают с изучения того, как разрабатывать простые подпрограммы для создания изображений; затем шаг за шагом показываются методы визуализации (rendering) рисунков или более сложных объектов.