Вслед за операцией отсечения выполняется, наконец, перспективное деление (perspective division) (как показано на рис. 7.11), после чего упорядоченная тройка (х, y,z) пропускается через преобразование в порт просмотра. Позднее мы увидим, что это преобразование сдвигает и изменяет размеры компонентов XVI у так, чтобы они правильно разместились в порту просмотра, а также осуществляет незначительные изменения 2-компонента (отвечающего за псевдоглубину), чтобы он стал удобнее для определения глубины.
Преобразование в порт просмотра Как мы уже видели, перспективное преобразование «втискивает» сцену в канонический куб, как показано на рис. 7.28. Если форматное соотношение отображаемого объема камеры (то есть форматное соотношение окна на ближней плоскости) равно 1,5, то, очевидно, что происходит искажение, когда перспективное преобразование масштабирует объекты в окно с форматным соотношением 1. Однако преобразование в порт просмотра может аннулировать это искажение, отобразив квадрат в порт просмотра с форматным соотношением 1,5. Обычно форматное соотношение порта просмотра устанавливается таким же, как у отображаемого объема.
Рис. 7.28. Преобразование в порт просмотра восстанавливает форматное соотношение объекта Мы уже неоднократно встречались с функцией OpenGL g1Viewport(x, у, wid, ht). Она устанавливает порт просмотра левым верхним углом в точку (х, у) (в экранных координатах) и будет иметь wid пикселов в ширину и ht пикселов в высоту. Кроме того, эта функция преобразовывает диапазон псевдоглубины из (-1,1) в (0,1).
Вернемся к рис. 7.11, на котором изображен весь графический конвейер. Каждая точка У(являющая-ся обычно вершиной полигона) проходит через следующие этапы"opengl1_497.html">⇐ Предыдущая| |Следующая ⇒