Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
комп.граф.часть 2.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
21 Кб
Скачать
☆

12. У чому є призначення бібліотеки glu?

Библиотека утилит OpenGL (GLU) содержит несколько групп команд, которые дополняют основной интерфейс OpenGL, обеспечивая п

процедуры делают использование основных команд OpenGL, любой реализации OpenGL гарантированно поддерживает утилиту процедур. Обратите внимание, что префикс для Utility Library процедур является Glu , а не GL . GLU обеспечивает масштабирование изображения и автоматическая мипмаппинг процедур для упрощения спецификации текстуру изображения

В состав библиотеки GLU вошла реализация более сложных функций, таких как набор популярных геометрических примитивов (куб, шар, цилиндр, диск), функции построения сплайнов, реализация дополнительных операций над матрицами и т.п. Все они реализованы через базовые функции OpenGL.

13. У чому є призначення бібліотеки glut?

GLAUX и GLUT, которые используются для создания так называемых консольных приложений. GLUT, предоставляющая широкий набор средств взаимодействия с пользователем. Эта библиотека обеспечивает единый интерфейс для работы с окнами вне зависимости от платформы

Функции GLUT могут быть классифицированы на несколько групп по своему назначению:

• Инициализация

• Начало обработки событий

• Управление окнами

• Управление меню

• Регистрация вызываемых (callback) функций

• Управление индексированной палитрой цветов

• Отображение шрифтов

• Отображение дополнительных геометрических фигур(тор, конус и др.)

14. Визначте поняття програмування, керованого подіями.

Функции библиотеки GLUT реализуют так называемый событийно-управляемый механизм. Это означает, что есть некоторый внутренний цикл, который запускается после соответствующей инициализации и обрабатывает, одно за другим, все события, объявленные во время инициализации. К событиям относятся: щелчок мыши, закрытие окна, изменение свойств окна, передвижение курсора, нажатие клавиши, и "пустое" (idle) событие, когда ничего не происходит. Для проведения периодической проверки совершения того или иного события надо зарегистрировать функцию, которая будет его обрабатывать. Для этого используются функции вида:

void glutDisplayFunc(void (*func) (void))

void glutReshapeFunc(void (*func) (int width, int height))

void glutMouseFunc(void (*func) (int button, int state, int x, int y))

void glutIdleFunc(void (*func) (void))

15. Роз'ясніть використання подій від миші в GLUT.

Для мыши вы устанавливаете свою функцию обработки событий мыши вызовом функцииauxMouseFunc(int button,int action,AUXMOUSEPROC). Переменная button может принимать значения - AUX_LEFTBUTTON, AUX_MIDDLEBUTTON, AUX_RIGHTBUTTON. Переменная action принимает следующие значения - AUX_MOUSEDOWN, AUX_MOUSEUP, AUX_MOUSELOC. Функция AUXMOUSEPROC должна иметь прототип - void CALLBACK FunctionName(AUX_EVENTREC *event), где AUX_EVENTREC определено как

typedef struct _AUX_EVENTREC

{

GLint event;

GLint data[4];

}AUX_EVENTREC;

glutMouseFunc(), обработчик нажатий клавиши мыши;

• glutMotionFunc(), обработчик мыши при изменении положения курсора;

• glutPassiveMotionFunc(), обработчик активен когда положение курсора изменено, но клавиша мыши не нажата.

16. Роз'ясніть використання подій від клавіатури в glut.

Для того, чтобы реагировать на клавиатуру или мышь, вы должны определить функцию, которая будет вызываться при поступление событий от клавиатуры или мыши. Для кнопки клавиатуры вы определяете функцию со следующим прототипом void CALLBACK FunctionName(void) и устанавливаете ее как обработчик определенной кнопки - auxKeyFunc(key_code, FunctionName); key_code смотри в glaux.h. Пример: auxKeyFunc(AUX_LEFT, FunctionName) Здесь вы устанавливаете FunctionName как функцию, которая будет вызываться при нажатии на клавиатуре клавиши "стрелка влево".

Функции клавиатуры

Для обработки событий клавиатуры существует несколько функций.

Нажатие клавиш клавиатуры

Эта функция обрабатывает нажатие клавиш имеющих скан-коды (ASCII). Обработчик должен удовлетворять прототипу:

void func( unsigned char k, int x, int y );

где k - это ASCII-код символа нажатой клавиши, а параметры x и y содержат координаты курсора мыши (с репером в л