Обычно приложения сначала устанавливают матрицу вида в качестве текущей, а потом накладывают на нее прочие нужные матрицы моделирования. Матрица может быть установлена для разумных преобразований вида функцией gluLookAt (она не является частью OpenGL, но входит во вспомогательную библиотечку, поставляемую со всеми реализациями OpenGL). Матрицы модели-вида в OpenGL обычно хранятся в стеке, и самую верхнюю матрицу можно скопировать на верх стека вызовом функции glPushMatnx. После этого все преобразования могут быть наложены на самую верхнюю матрицу функциями gl Scale, gl Transi ate и gl Rotate, чтобы определить преобразования для каждого трехмерного объекта в сцене. Положение источников освещения задается функцией gl Light, трансформируются
1.9. Преобразования координат
они текущей матрицей модели-вида, так что координаты источников освещения также хранятся как координаты обзора. Матрица модели-вида должна быть полностью сформирована перед преобразованиями координат источников освещения, иначе эффекты освещения будут полностью нарушены.
Вычисления освещения в OpenGL происходят над вершинами в системе координат обзора, Чтобы правильно вычислить отражение, положения источников освещения и нормали, поверхности нужно расположить в одной и той же системе координат. Часто в реализациях OpenGL это выполняется в системе координат обзора, поэтому заданные нормали поверхности также нужно преобразовать в пространство обзора. Обычно такие преобразования делаются обратной транспозицией матрицы модели-вида.
На этом этапе формулы освещенности OpenGL можно применять для определения освещенности каждой вершины. После преобразования координат в систему обзора обычно определяют видимый объем - часть трехмерной сцены, которая будет видима в окончательном изображении. Преобразование, которое помещает объекты видимого объема в пространство отсечения (система координат, приемлемая для отсечения), называется проецированием. В OpenGL проецирование настраивается функцией glMatrixMode, при этом выбирается и правильно устанавливается матрица проекции. Параметры, которые могут передаваться, - это область обзора (размер видимой части сцены), соотношение сторон (вертикальный размер поля обзора может не соответствовать горизонтальному), поверхности отсечения для отбраковки объектов либо слишком близких, либо слишком далеких (при вычислении перспективы получаются причудливые результаты, если