Введение в OpenGL

Здесь есть возможность читать онлайн «Введение в OpenGL» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Введение в OpenGL: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Введение в OpenGL»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Введение в OpenGL», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

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

Интервал:

Закладка:

Сделать

gluQuadricTexture(QuadrObj, GL_TRUE);

//--Задание параметров текстуры---------------------------------------//

//--Повтор изображения по параметрическим осям s и t------------------//

glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);

glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);

//--Не использовать интерполяцию при выборе точки на текстуре---------//

glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

glTexParameteri (GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);

//--Совмещать текстуру и материал объекта-----------------------------//

glTexEnvi (GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);

}

void Init(void) {

InitVertexTetr();

InitNormsTetr();

MakeTetrList();

//--Определение свойств материала-------------------------------------//

glMaterialfv (GL_FRONT_AND_BACK,GL_AMBIENT,mat_amb);

glMaterialfv (GL_FRONT_AND_BACK,GL_SPECULAR,mat_spec);

glMaterialf(GL_FRONT,GL_SHININESS,shininess);

//--Определение свойств освещения-------------------------------------//

glLightfv(GL_LIGHT0, GL_DIFFUSE, light_col);

glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);

//--Проводить удаление невидимых линий и поверхностей-----------------//

glEnable(GL_DEPTH_TEST);

//--Проводить нормирование нормалей-----------------------------------//

glEnable(GL_NORMALIZE);

//--Материалы объектов отличаются только цветом диффузного отражения--//

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);

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Введение в OpenGL»

Представляем Вашему вниманию похожие книги на «Введение в OpenGL» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Введение в OpenGL»

Обсуждение, отзывы о книге «Введение в OpenGL» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x