Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

D примитивы из библиотеки GLUT



 

Функции, проводящие построение примитивов из библиотеки GLUT, реализованы через стандартные примитивы OpenGL и GLU. Для построения нужного примитива достаточно произвести вызов соответствующей функции.

void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks)

void glutWireSphere(GLdouble radius, GLint slices, GLint stacks)

Эти функции строят сферу с центром в начале координат и радиусом radius. При этом число разбиений сферы вокруг оси z задается параметром slices, а вдоль оси z – параметром stacks Команда glutSolidSphere() строит сферу, а glutWireSphere()–каркас сферы.

void glutSolidCube(GLdouble size)

void glutWireCube(GLdouble size)

Функции строят куб или каркас куба с центром в начале координат и длиной ребра size.

void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks)

void glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks)

Эти функции строят конус или его каркас высотой height и радиусом основания base, расположенный вдоль оси z. Основание находится в плоскости z=0.

void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings)

void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings)

Эти функции строят тор или его каркас в плоскости z=0. Внутренний и внешний радиусы задаются параметрами innerRadius, outerRadius. Параметр nsides задает число сторон в кольцах, составляющих ортогональное сечение тора, а rings – число радиальных разбиений тора.

void glutSolidTetrahedron (void)

void glutWireTetrahedron (void)

Эти функции строят тетраэдр (правильную треугольную пирамиду) или его каркас, при этом радиус описанной сферы вокруг него равен единице.

void glutSolidOctahedron (void)void glutWireOctahedron(void)

Эти функции строят октаэдр или его каркас, радиус описанной вокруг него сферы равен единице.

void glutSolidDodecahedron (void)

void glutWireDodecahedron (void)

Эти функции строят додекаэдр или его каркас, радиус описанной вокруг него сферы равен квадратному корню из трех.

void glutSolidIcosahedron(void)

void glutWireIcosahedron (void)

Эти функции строят икосаэдр или его каркас, радиус описанной вокруг него сферы равен единице.

void glutWireTeapot (GLdouble size)

void glutSolidTeapot (GLdouble size)

Эти функции строят чайник или его каркас.

Для корректного построения перечисленных примитивов необходимо удалять невидимые линии и поверхности, для чего надо включить соответствующий режим вызовом функцииglEnable(GL_DEPTH_TEST).

 

Установка источника света

 

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

OpenGL позволяет задать до восьми источников с именами GL_LIGHT0, GL_LIGHT1 и т.д. Каждый источник обладает различными свойствами и должен быть задействован (включен). У каждого его свойства имеется значение по умолчанию. Например, для создания источника, расположенного в точке (3, 6, 5) в мировых координатах, следует включить в текст программы следующий код:

GLfloat myLightPosition[] = {3.0, 6.0, 5.0, 1.0};

glLightfv(GL_LIGHT0, GL_POSITION, myLightPosition);

glEnable(GL_LIGHTING); // включаем (свет)

glEnable(GL_LIGHT0); // включаем этот конкретный источник

Массив myLightPosition[ ] (имя можно использовать любое) определяет положение источника света и передается в функцию glLightfv( ) вместе с именем источника GL_LIGHT0, для того чтобы связать его с конкретным источником, обозначенным именем GL_LIGHT0. В этом примере параметры, характеризующие свойства и цвет источника, а так же свойства и цвет материала объекта устанавливаются по умолчанию.

Внимание.

1. Позиция источника, заданного функцией glLightfv(GL_LIGHT0, GL_POSITION, myLightPosition), является объектом, который, как и любая точка, посылаемая в конвейер, подвергается преобразованию матрицей VM. Это надо учитывать в программе!

2. После включения освещения функцией glEnable(GL_LIGHTING), все установки цвета glColor*( ), не действуют. Если на фоне освещенного объекта 3D вам необходимо нарисовать какие-то линии в цвете, то необходимо выключить освещение glDisable(GL_LIGHTING).

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.