Введение в OpenGL

Тут можно читать онлайн Введение в OpenGL - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Введение в OpenGL краткое содержание

Введение в OpenGL - описание и краткое содержание, автор Неизвестный Автор, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Введение в OpenGL - читать онлайн бесплатно полную версию (весь текст целиком)

Введение в OpenGL - читать книгу онлайн бесплатно, автор Неизвестный Автор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

glEnable(GL_COLOR_MATERIAL);

glColorMaterial(GL_FRONT_AND_BACK,GL_DIFFUSE);

//--Создания указателя на quadric-объект для построения колец---------//

QuadrObj=gluNewQuadric();

//--Определение свойств текстуры--------------------------------------//

TextureInit();

//--Задание перспективной проекции------------------------------------//

glMatrixMode(GL_PROJECTION);

gluPerspective(89.0,1.0,0.5,100.0);

//--Далее будет проводиться только преобразование объектов сцены------//

glMatrixMode(GL_MODELVIEW);

}

void DrawFigures(void) {

//--Включение режима нанесения текстуры-------------------------------//

glEnable(GL_TEXTURE_2D);

//--Задаем цвет диффузного отражения для колец------------------------//

glColor3fv(mat_diff1);

//--Чтобы не проводить перемножение с предыдущей матрицей загружаем единичную матрицу//

glLoadIdentity();

//--Определяем точку наблюдения---------------------------------------//

gluLookAt(0.0, 0.0, 2.5,0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

//--Сохраняем видовую матрицу, так как дальше будет проводиться поворот колец//

glPushMatrix();

//--Производим несколько поворотов на новый угол (это быстрее,--------//

//--чем умножать предыдущую видовую матрицу на матрицу поворота с-----//

//--фиксированным углом поворота)-------------------------------------//

glRotatef (-CurAng,1,1,0);

glRotatef (CurAng,1,0,0);

//--Для рисования колец каждое из них надо преобразовать отдельно,----//

//--поэтому сначала сохраняем видовую матрицу, затем восстанавливаем--//

glPushMatrix();

glTranslatef (0,0,-RingHeight/2);

DrawRing();

glPopMatrix();

glPushMatrix();

glTranslatef (0,RingHeight/2,0);

glRotatef (90,1,0,0);

DrawRing();

glPopMatrix();

glPushMatrix();

glTranslatef (-RingHeight/2,0,0);

glRotatef (90,0,1,0);

DrawRing();

glPopMatrix();

//--Восстанавливаем матрицу для поворотов тетраэдра--------------------//

glPopMatrix();

//--Выключаем режим наложения текстуры--------------------------------//

glDisable(GL_TEXTURE_2D);

//--Проводим повороты-------------------------------------------------//

glRotatef(CurAng,1,0,0);

glRotatef(CurAng/2,1,0,1);

//--Чтобы тетраэдр вращался вокруг центра, его надо сдвинуть вниз по оси oz//

glTranslatef(0,-0.33,0);

//--Задаем цвет диффузного отражения для тетраэдра--------------------//

glColor3fv(mat_diff2);

//--Проводим построение тетраэдра-------------------------------------//

glCallList(TETR_LIST);

}

void Display(void) {

//--Инициализация (очистка) текущего буфера кадра и глубины-----------//

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

//--Построение объектов-----------------------------------------------//

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;

}

Результат работы программы:

В программе используется только файл gluth который содержит обращения к - фото 2

В программе используется только файл 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.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Неизвестный Автор читать все книги автора по порядку

Неизвестный Автор - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Введение в OpenGL отзывы


Отзывы читателей о книге Введение в OpenGL, автор: Неизвестный Автор. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x