//--Построение объектов-----------------------------------------------//
DrawFigures();
//--Перестановка буферов кадра----------------------------------------//
glutSwapBuffers();
}
void Redraw(void) {
//--Увеличение текущего угла поворота---------------------------------//
CurAng+=1;
//--Сигнал для вызова процедуры создания изображения (для обновления)-//
glutPostRedisplay();
}
int main(int argc, char **argv) {
//--Инициализация функций библиотеки GLUT-----------------------------//
glutInit(&argc, argv);
//--Задание режима с двойной буферизацией, представление цвета в формате RGB,--//
//--использование буфера глубины --//
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
//--Создание окна приложения-----------------------------------------//
glutCreateWindow("Example of using OpenGL");
//--Регистрация функции построения изображения-----------------------//
glutDisplayFunc(Display);
//--Регистрация функции обновления изображения-----------------------//
glutIdleFunc(Redraw);
//--Инициализация функций OpenGL-------------------------------------//
Init();
//--Цикл обработки событий-------------------------------------------//
glutMainLoop();
return 0;
}
Результат работы программы:
В программе используется только файл glut.h, который содержит обращения к файлам gl.h и glu.h, поэтому отдельно подключать их не нужно.
Большим достоинством OpenGL является независимость большинства команд. Например, чтобы отключить наложение текстуры, достаточно закомментировать вызов функции TextureInit(), а чтобы получить статичное изображение достаточно не регистрировать функцию обновления изображения вызовом функции glutIdleFunc(). В этом случае можно использовать режим с одним буфером, заменив GL_DOUBLE на GL_SINGLE в команде glutInitDisplayMode() и добавив команду glFlush() в конце процедуры Display() для очистки этого буфера.
Использованные материалы:
1. Тихомиров Ю. Программирование трехмерной графики. СПб., BHV 1998.
2. Visual Introduction in OpenGL, Siggraph’98.
3. The OpenGL graphics system: a specification (version 1.1).
4. Программирование GLUT: окна и анимация. Miguel Angel Sepulveda, LinuxFocus.
5. The OpenGL Utility Toolkit (GLUT) Programming Interface, API version 3, specification.