Использование этой функции вместо соответствующих команд OpenGL придает программе большую читабельность. Не является необычным создание из таких подпрограмм персональной коллекции.

2.2. Рисование основных графических примитивов ством назначения системы координат. Как мы увидим позже, OpenGL регулярно производит большое число преобразований. Для этого используются матрицы, и команды в mylnitO также оперируют определенными матрицами для достижения своей цели. Подпрограмма g1u0rtho2D() производит нужное нам преобразование для экранного окна размером 640 пикселов в ширину и 480 пикселов в длину.

Листинг 2.4. Установка простой системы координат void mylnit(void) {

glMatrixMode(GL_PROJECTION); glLoadldentityO: gluOrtho2D(0. 640.0. 0. 480.0):
}

Соберем все это вместе. Законченная программа на OpenGL

Дом дед мороза в деревне. Деревня деда мороза устюг.

В листинге 2.5 приведена законченная программа, рисующая три непритязательные точки из рис. 2.3. Как мы увидим, эту программу нетрудно изменить так, чтобы она рисовала более интересные объекты. Инициализация функции mylnitO задает систему координат, размер точки, цвет фона и цвет рисования. Само рисование инкапсулировано в функции обратного вызова myOisplayO. Поскольку данная программа не является интерактивной, не используется никаких других функций обратного вызова. Функция gIFlushO вызывается после того, как точки нарисованы, чтобы убедиться, что все данные были должным образом обработаны и отправлены на дисплей. Это важно для некоторых систем, работающих с сетью. Данные буферизуются на хост-машине (host-machine) и пересылаются на удаленный дисплей только при переполнении буфера или при выполнении команды gIFlushO.

Листинг 2.5. Законченная OpenGL-программа рисования трех точек #include<windows.h) // use as needed for your system // используем, как нужно для вашей системы #include<gl/Gl.h> #include<gl/glut.h> //«««««« my I nit »»»»» void mylnit(void) {

glClearColord.0.1.0.1.0.0.0); // set white background color; // устанавливаем белый цвет фона


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