glMatrixMode (GL_PROJECTION); Указанная команда присваивает проекционной матрице статус текущей (изначально текущей является единичная матрица). Впрочем, если предполагается отменить данную команду, например, чтобы получить другую проекцию сцены, инициализацию можно также проводить с помощью команды
glLoadldentity ( ); Это гарантирует, что при каждом переходе в режим проектирования матрица становится единичной, так что новые параметры наблюдения не будут объединяться с предыдущими.
ФУНКЦИЯ ОТСЕКАЮЩЕГО ОКНА GLU
Чтобы определить двухмерное отсекающее окно, можно использовать функцию OpenGL Utility:
gluOrtho2D (xwmin, xwmax, ywmin, ywmax); Координаты границ отсекающего окна указываются как числа с двойной точностью. Данная функция задает ортогональную проекцию для отображения сцены на экран. Для трехмерной сцены это означает, что объекты будут проектироваться вдоль параллельных линий, которые перпендикулярны двухмерному экрану ху. Однако в двухмерных приложениях объекты уже определены на плоскости ху. Следовательно, ортогональная проекция не влияет на нашу двухмерную сцену иным образом, кроме преобразования точек объекта в нормированные координаты. Тем не менее ортогональную проекцию нужно задать, поскольку наша двухмерная сцена обрабатывается по полному трехмерному конвейеру наблюдения OpenGL. Фактически отсекающее окно можно задать с использованием трехмерной версии функции gluOrtho2D из корневой библиотеки OpenGL (раздел 7.10).
В процедурах отсечения OpenGL используются нормированные координаты в диапазоне от -1 до 1. Функция gluOrtho2D задает трехмерную версию матрицы преобразования (6.9) для отображения объектов в отсекающем окне в нормированные координаты. Объекты вне нормированного квадрата (и вне отсекающего окна) удаляются с отображаемой сцены.
Если в программе-приложении не задать отсекающее окно, будут использоваться координаты по умолчанию (xwmin,ywmin) = (-1,0;-1,0) и (xwmax,ywmax) = (1,0; 1,0). Следовательно, по умолчанию отсекающее окно - это нормированный квадрат с центром в начале координат и стороной 2.
ФУНКЦИЯ ПОЛЯ ПРОСМОТРА OpenGL
Параметры поля просмотра задаются с помощью следующей функции OpenGL. glViewport (xvmin, yvmin, vpWidth, vpHeight); Все значения параметров даются в целочисленных экранных координатах относительно окна на экране дисплея. Параметры xvmin и yvmin задают положение левого нижнего угла поля просмотра относительного левого нижнего угла окна на экране дисплея. Ширина и высота пикселя поля просмотра задаются параметрами vpWidth и vpHeight. Если в программе не вызывать функцию glViewport, по умолчанию размер и положение поля просмотра будут такими же, как у окна на экране дисплея.
После применения процедур отсечения, точки в нормированном квадрате переводятся в прямоугольник поля просмотра с использованием матрицы (6.10). Требуемые в данной матрице координаты правого верхнего угла поля просмотра вычисляются через ширину и высоту поля просмотра:
= Zümin + vpWidth, yvmax = yvmin + vpHeight. (6.11)
Для окончательного преобразования в буфер регенерации в заданные положения загружаются цвета пикселей примитивов поля просмотра.