Таким образом, для настройки окна и порта просмотра из примера 3.2.1 нам следует использовать следующий код:
g1MatrixMode(GL_PR0JECTI0N): glLoadldentityO : g1u0rtho2D(0.0. 2.0. 0.0. 1.0): // sets the window // устанавливает окно glViewport(40. 60. 360. 240): // sets the viewport // устанавливает порт просмотра В дальнейшем каждая точка, отправленная в OpenGL посредством функции glVertex2*(x, у), подвергается преобразованию согласно уравнениям (3.3), а края автоматически отсекаются границами окна. (В главе 7 мы подробно рассмотрим, как это происходит в трехмерном случае; в процессе этого рассмотрения также станет понятно, что двумерный вариант является всего лишь частным случаем трехмерного.)
Сайт о строительстве domdvordorogi.ru.
Мы сделаем программы более читабельными, если инкапсулируем все настраивающие окно команды внутрь функции setWindowO, как показано в листинге 3.1. В листинге показана также функция setViewportO, внутрь которой упрятаны все детали OpenGL-функции gl Viewports .). Для простоты использования функции setViewport ее параметры слегка перегруппированы, чтобы соответствовать параметрам setWindowO, так что теперь в обеих функциях они идут в таком порядке: left, right, bottom, top (левый, правый, нижний, верхний).
Листинг 3.1. Полезные функции для настройки окна и порта просмотра
// ................. setWindow ..........................
void setWindow(float left, float right, float bottom, float top) {
g1MatrixMode(GL_PR0JECTI0N): glLoadldentityO;
glu0rtho2D(left. right, bottom, top):
}
// ................. setViewport ..........................
void setViewport(int left, int right, int bottom, int top) {
glViewportOeft. bottom, right - left, top - bottom):
}
Отметим, что для удобства мы используем для параметров функции setWindowO тип float. Параметры 1 eft, ri ght и т. д. автоматически преобразуются к типу GLDoubl е при передаче их функции gl u0rtho2D( ), как указано в прототипе этой функции. Подобным же образом мы используем тип int для параметров функции setViewportO, зная, что тип аргументов функции glViewportO также будет правильно преобразован.