Большинство современных графических приложений пишется для оконной графической среды. Программа открывает на экране окно, которое пользователь в любое время может перемещать или изменять его размеры и которое реагирует на щелчки мышью и нажатие клавиш. Мы ознакомились с тем, как использовать функции OpenGL для облегчения создания подобной программы.
Мы рассмотрели применение подпрограмм рисования примитивов для создания изображений, состоящих из точек, прямых линий, ломаных линий и полигонов. Затем мы скомпоновали их в более мощные подпрограммы, которые формируют основу персонального графического инструментария пользователя. Мы проиллюстрировали на нескольких примерах применение этих инструментальных средств и описали методы взаимодействия с программой посредством клавиатуры и мыши. В приводимых ниже тематических заданиях предлагаются дополнительные примеры программирования, которые позволят глубже исследовать как уже рассматривавшиеся темы, так и не менее интересные ответвления от них.
2.6. Тематические задания При использовании данного текста лучше всего практически осуществлять новые идеи по мере их появления, чтобы закрепить усвоение. Это особенно верно относительно нескольких начальных глав, поскольку первые графические программы зачастую представляют собой барьер, который необходимо преодолеть. Чтобы подчеркнуть важность этого момента, каждая глава завершается некоторым количеством тематических заданий (case studies), в которых описываются программные проекты, интересные сами по себе и концентрирующие в себе идеи, рассмотренные в текущей главе.
Некоторые из этих тематических заданий требуют просто конкретизировать приводимый в тексте псевдокод и запустить программу пошаговым методом. Другие являются значительно более сложными и могут стать основой главного программного проекта за весь курс. Всегда трудно определить, сколько времени понадобится кому-либо для выполнения какого-либо проекта. «Уровень сложности» («level of effort»), необходимый для выполнения каждого тематического задания, - это в лучшем случае грубая приблизительная оценка этого времени.