Поделиться через


Преобразование координат

Библиотека служебной программы OpenGL (GLU) предоставляет несколько часто используемых функций преобразования матриц. Вы можете настроить двумерную область орфографического просмотра с помощью gluOrtho2D, стандартного тома представления перспективы с помощью gluPerspective или тома представления, центрированного на указанной точке зрения с помощью gluLookAt. Каждая из этих функций создает нужную матрицу и применяет ее к текущей матрице с помощью glMultMatrix.

Функция gluPickMatrix упрощает выбор матрицы выбора, создавая матрицу, которая ограничивает рисование небольшой областью окна просмотра. При повторной отрисовке сцены в режиме выделения после применения этой матрицы будут выделены все объекты, которые будут нарисованы рядом с курсором, а сведения о них будут сохранены в буфере выделения. Дополнительные сведения о режиме выбора см. в разделе "Выполнение выбора и обратной связи" Выполнение выбора и отзывов.

Чтобы определить, где в окне рисуется объект, используйте gluProject, который преобразует указанные координаты объекта objx, objy и objz в координаты окна с помощью modelMatrix, projMatrix и окна просмотра. Результат хранится в winx, winy и winz. Если функция выполняется успешно, возвращаемое значение будет GL_TRUE. Если функция завершается сбоем, возвращаемое значение будет GL_FALSE.

Функция gluUnProject выполняет обратное преобразование: она преобразует указанные координаты окна winx, winy и winz в координаты объекта с помощью modelMatrix, projMatrix и viewport. Результат хранится в objx, objy и objz. Если функция выполняется успешно, возвращаемое значение будет GL_TRUE. Если функция завершается сбоем, возвращаемое значение будет GL_FALSE.