Страница 12 |
Введение в OpenGl. Учебник |
||||||
Главная Страница 1 Страница 2 Страница 3 Страница 4 Страница 5 Страница 6 Страница 7 Страница 8 Страница 9 Страница 10 Страница 11 Страница 12 Страница 13 Страница 14 Страница 15 Страница 16 Страница 17 Страница 18 Страница 19 Страница 20 Страница 21 Скачать учебник |
|||||||
---|---|---|---|---|---|---|---|
и GLUT для вашей системы, все примеры будут работать без изменений (или почти без изменений). Кроме того, в отличие от OpenGL, чьи команды ограничены рисованием примитивов, GLUT содержит функции для рисования более сложных трехмерных объектов, таких как сфера, куб, торус (бублик) и чайник. (Обратите внимание на то, что GLU также содержит функции для рисования этих объектов, а также цилиндров, конусов и многого другого.) Библиотеки GLUT может быть недостаточно для построения полномасштабного OpenGL приложения (например, в силу отсутствия полного контроля над форматом пикселей или созданием контекста OpenGL), но это хорошая начальная точка для изучения OpenGL. Остальная часть данного раздела посвящена наиболее часто применяемым группам функций GLUT. Функции неуказанные здесь, рассмотрены в приложении A данного пособия. 1.9.1 Управление окном
glutInit() должна быть вызвана до любых других GLUT – функций, так как она инициализирует саму библиотеку GLUT. glutInit() также обрабатывает параметры командной строки, но сами параметры зависят от конкретной оконной системы. Для системы X Window, примерами могут быть –iconic, -geometry и –display. (Параметры, передаваемые glutInit(), должны быть теми же самыми, что и параметры, передаваемые в функцию main()).
Указывает режим отображения (например, RGBA или индексный, одинарной или двойной буферизации) для окон, создаваемых вызовами glutCreateWindow(). Вы также можете указывать, имеет ли окно ассоциированные с ним буфер или буферы глубины, трафарета и аккумуляции. Аргумент mask – это битовая комбинация, полученная при помощи операции OR и следующих констант: GLUT_RGBA или GLUT_INDEX (для указания цветового режима), GLUT_SINGLE или GLUT_DOUBLE (для указания режима буферизации), а также константы для включения различных буферов GLUT_DEPTH, GLUT_STENCIL, GLUT_ACCUN. Например, для окна с двойной буферизаций, RGBA – цветовым режимом и ассоциированными буферами глубины и трафарета, используйте GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL. Значение по умолчанию – GLUT_RGBA | GLUT_ SINGLE (окно с однократной буферизацией в RGBA - режиме).
Запрашивают окно определенного размера и в определенном месте экрана соответственно. Аргументы (x, y) определяют, где будет находиться угол окна относительно всего экрана. width и height определяют размер окна (в пикселях). Начальные размеры и место размещения окна могут быть перекрыты последующими вызовами.
Открывает окно с предварительно установленными характеристиками (режимом отображения, размером и так далее). Строка name может быть отображена в заголовке окна, но это зависит от конкретной оконной системы. Окно не отображается до того, как произведен вход в glutMainLoop(), поэтому до вызова этой функции нельзя рисовать что-либо в окно. 1.9.2 Функции управления событиямиПосле того, как окно создано, но до входа в главный цикл программы, вы должны зарегистрировать функции обратного вызова, используя следующие функции GLUT.
Позволяет указать функцию (аргументом func), которая будет вызываться каждый раз, когда содержимое окна требует перерисовки. Это может случиться, когда окно открывается, разворачивается, освобождается его часть, ранее перекрытая другим окном, или вызывается функция glutPostRedisplay().
Позволяет указать функцию, которая вызывается каждый раз при изменении размера окна или его позиции на экране. Аргумент func – это указатель на функцию, которая принимает два параметра: width – новая ширина окна и height – новая высота окна. Обычно func вызывает glViewport() для отсечения графического вывода по новым размерам окна, а также настраивает проекционную матрицу для сохранения пропорций спроецированного изображения в соответствии с новыми размерами порта просмотра. Если glutReshapeFunc |
|||||||