2.6.2. Соотношение сторон и видовые окна Сам по себе параметр соотношение сторон (aspect ratio) применим к любому прямоугольнику и означает отношение его ширины к высоте. Существующая в графической системе независимость между объектами, визуализацией и настройкой окна приложения В таких системах, как X Window, запрашивается формирование окна с определенными свойствами. Но переданные значения свойств могут быть переопределены операционной системой, если они не соответствуют функциональным возможностям установленной версии.

2.6. Функции управления может привести к нежелательным побочным эффектам, в частности искажению пропорций между продольными и поперечными размерами объектов на экране. Соотношение сторон прямоугольника видимости задается аргументами функции glOrtho() и может отличаться от соотношения сторон окна, которое задается аргументами функции glutInitWindowSize(). Именно такой случай продемонстрирован на рис. 2.32, и вы видите, к каким искажениям пропорций в изображении объектов на экране это привело. Следует оговориться, что "тайной пружиной" такого искажения явилось не только несоответствие между соотношениями сторон, но и назначенный по умолчанию режим отображения, при котором все содержимое прямоугольника видимости должно быть перенесено в заданное окно на экране. Чтобы избежать таких искажений, следует отменить этот режим - использовать концепцию видового окна. Видовое окно (viewport) - это прямоугольная область в пределах окна на экране (окно в окне). По умолчанию видовое окно занимает всю область экрана, запрошенную у операционной системы, но можно установить и другие его размеры, вызывав функцию glViewport():

void glViewport(GLint х, GLint у, GLsizei w, GLsizei h); Первые два аргумента этой функции - х и у - положение левого нижнего угла прямоугольника видового окна относительно левого нижнего угла выделенной области экрана. Следующие аргументы - w и h - задают высоту и ширину видового окна. Все параметры задаются как целые числа и измеряются в пикселях. Соответствие между отсекающей рамкой (прямоугольником видимости) и видовым окном на экране иллюстрируется на рис. 2.33. При заданных размерах окна приложения таким способом можно в прикладной программе устранить искажение пропорций изображения.


⇐ Предыдущая| |Следующая ⇒