Современная операционная среда позволяет выводить на один и тот же экран множество окон. Каждое из них может принадлежать разным приложениям или даже в пределах одного приложения выполнять совершенно разные функции. Мы в дальнейшем будем использовать термин подсистема окон, подразумевая под ним многооконную среду, поддерживаемую в таких операционных системах, как X Window или Microsoft Windows. Положение внутри этого окна отсчитывается от его базовой точки - обычно один из углов прямоугольной рамки окна. В большинстве случаев им является левый нижний угол, который имеет оконные координаты (0, 0), но учтите, что в некоторых операционных системах это соглашение не выполняется. Поскольку в растровом дисплее развертка выполняется по той же траектории, что и в коммерческом телевидении (слева направо и сверху вниз), то с этой точки зрения желательно было бы выбирать в качестве начала координат левый верхний угол. В OpenGL команды подразумевают, что начало оконной системы координат находится в левом нижнем углу, хотя информация, получаемая от подсистемы окон, в частности о положении указателя мыши, часто выражается в иной системе координат, которая имеет начало отсчета в левом верхнем
l0B OpenGL система оконных координат трехмерная, а система экранных координат - двухмерная. В обеих системах в качестве единицы измерения применяются пиксели, но третий компонент в системе оконных координат позволяет хранить информацию о глубине.
Графическое программирование
углу. Таким образом, приходится выполнять дополнительное преобразование данных, поступающих от операционной системы.
Обращаю ваше внимание и еще на одно обстоятельство. Хотя весь экран дисплея имеет определенное стандартное разрешение, скажем 1280x1024 пикселей, окно приложения может иметь любые размеры (но, конечно, не больше, чем размер полного экрана). Таким образом, буфер кадра приложения должен иметь разрешение соответственно размеру окна. Если используется окно размером 300x400 пикселей, то нужно считать, что и буфер кадра имеет разрешение 300x400, хотя при этом используется только часть памяти, отведенной для буфера.