Примитивы библиотек GLAUX и GLUT

advertisement
Использование трёхмерных примитивов библиотеки GLAUX
Библиотека содержит набор дополнительных функций, упрощающий процесс
написания программы.
Файл glaux.dll размещается в каталоге system32 или в папке проекта. Заголовочный
файл glaux.h размещается в каталоге C:\Dev-Cpp\include или в папке проекта.
В опциях проекта добавляется ссылка –lglaux. В разделе заголовков прописывается
строка:
#include <glaux.h> или #include “glaux.h”.
Слова Solid и Wire в названиях функций указывают метод построения
геометрических фигур, залитый или каркасный. Все примитивы строятся в начале
координат, т.е. их центром является точка 0,0,0.
Сфера
void auxSolidSphere (GLdouble radius)
void auxWireSphere (GLdouble radius)
Куб
void auxSolidCube (GLdouble width)
void auxWireCube (GLdouble width)
Параллелепипед
void auxSolidBox (GLdouble width, GLdouble height, Gldouble depth)
void auxWireBox (GLdouble width, GLdouble height, Gldouble depth)
Тор
void auxSolidTorus (GLdouble minRadius, GLdouble maxRadius)
void auxWireTorus (GLdouble minRadius, GLdouble maxRadius)
Цилиндр
void auxSolidCylinder (GLdouble radius, GLdouble heidht)
void auxWireCylinder (GLdouble radius, GLdouble heidht)
Конус
void auxSolidCone (GLdouble radius, GLdouble heidht)
void auxWireCone (GLdouble radius, GLdouble heidht)
Икосаэдр
void auxSolidIsocahedron (GLdouble width)
void auxWireIsocahedron (GLdouble width)
Октаэдр
void auxSolidOctahedron (GLdouble width)
void auxWireOctahedron (GLdouble width)
Тетраэдр
void auxSolidTetrahedron (GLdouble width)
void auxWireTetrahedron (GLdouble width)
Додекаэдр
void auxSolidDodecahedron (GLdouble width)
void auxWireDodecahedron (GLdouble width)
Чайник
void auxSolidTeapot (GLdouble dim)
void auxWireTeapot (GLdouble dim)
Пример
void F(){
glPushMatrix();
glTranslated(0.5,4,0);
auxSolidCube(1); // куб
glPopMatrix();
}
Примитивы библиотеки GLUT
OpenGL Utility Toolkit (GLUT) - библиотека утилит для приложений под OpenGL,
которая в основном отвечает за системный уровень операций ввода-вывода при работе с
операционной системой. Из функций можно привести следующие: создание окна,
управление окном, мониторинг за вводом с клавиатуры и событий мыши. Она также
включает функции для рисования ряда геометрических примитивов: куб, сфера, чайник.
GLUT даже включает возможность создания несложных всплывающих меню
(http://ru.wikipedia.org/wiki/GLUT). Функции представлены именами, начинающимися с
префикса glu.
Этапы генерации стандартных трехмерных фигур библиотеки GLUT
1 Определить указатель на объект
GLUquadricObj *quadObj;
2 Создать объект данного типа quadObj = gluNewQuadric();
3 Установить стиль фигуры gluQuadricDrawStyle(quadObj, style), где style:
залитый GLU_FILL, каркасный GLU_LINE, точечный CLU_POINT.
4 Сгенерировать фигуру
gluSphere, gluCylinder, gluDisk, gluPartialDisk и т.д.
5 Удалить объект из памяти gluDeleteQuadric(quadObj);
Первым параметром для gluSphere, gluCylinder, gluDisk, gluPartialDisk является
указатель на объект типа GLUquadricObj. Далее следуют параметры непосредственно
создаваемой фигуры.
Для сферы - это радиус; для цилиндра - радиус нижнего основания, радиус
верхнего основания и высота; для диска - внутренний радиус, внешний радиус; для части
диска - внутренний радиус, внешний радиус, угол, с которого начинать рисовать, длина
дуги в градусах, которую рисовать.
Последние два параметра у всех этих функций одинаковы. Это число разбиений
вокруг оси Z и число разбиений вдоль оси Z. Все сложные объекты состоят из простых:
точек, линий и многоугольников, создать идеально гладкую сферу или цилиндр
невозможно. Поэтому строится приближение из плоскостей. Для этого и нужно указать
количество разбиений. Чем больше разбиение, тем лучше будет выглядеть фигура.
Оптимальный вариант - от 10 до 20. Чем больше объект, тем больше нужно разбиений.
Пример
GLUquadricObj *quadObj;
quadObj = gluNewQuadric();
//создаем новый объект
gluQuadricDrawStyle(quadObj, GLU_FILL); // устанавливаем стиль: сплошной
gluSphere(quadObj, 0.5, 10, 10);
// рисуем сферу радиусом 0.5
gluDeleteQuadric(quadObj);
Download