Введение в OpenGL

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Структура приложения, использующего анимацию, будет следующей:

#include

void MyIdle(void) {

//--Код, который меняет переменные, определяющие следующий кадр--//

....

};

void MyDisplay(void) {

//--Код OpenGL, который отображает кадр --//

....

//-- После рисования переставляем буфера --//

glutSwapBuffers();

};

void main(int argcp, char **argv) {

//-- Инициализация GLUT --//

glutInit(&argcp, argv);

glutInitWindowSize(640, 480);

glutInitWindowPosition(0, 0);

//--Открытие окна--//

glutCreateWindow("My OpenGL Application");

//-- Выбор режима:Двойной буфер и RGBA цвета --//

glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);

//-- Регистрация вызываемых функций --//

glutDisplayFunc(MyDisplay);

glutIdleFunc(MyIdle);

//-- Запуск механизма обработки событий --//

glutMainLoop();

};

Этот шаблон используется в тексте приложения, использующего OpenGL, который приводится в конце этого пособия.

В случае, если приложение должно строить статичное изображение, можно заменить GLUT_DOUBLE на GLUT_SINGLE, так как одного буфера в этом случае будет достаточно, и убрать вызов функции glutIdleFunc().

Вершины и примитивы

Определение атрибутов вершины

Под вершиной понимается точка в трехмерном пространстве, координаты которой можно задавать следующим образом:

void glVertex[2 3 4][s i f d](type coords)

void glVertex[2 3 4][s i f d]v(type *coords)

Координаты точки задаются максимум четырьмя значениями: x, y, z, w, при этом можно указывать два (x,y) или три (x,y,z) значения, а для остальных переменных в этих случаях используются значения по умолчанию: z=0, w=1. Как уже было сказано выше, число в названии команды соответствует числу явно задаваемых значений, а последующий символ - их типу.

Координатные оси расположены так, что точка (0,0) находится в левом нижнем углу экрана, ось x направлена влево, ось y- вверх, а ось z- из экрана. Это расположение осей мировой системы координат, в которой задаются координаты вершин объекта, другие системы координат будут рассмотрены ниже.

Однако чтобы задать какую-нибудь фигуру одних координат вершин недостаточно, и эти вершины надо объединить в одно целое, определив необходимые свойства. Для этого в OpenGL используется понятие примитивов, к которым относятся точки, линии, связанные или замкнутые линии, треугольники и так далее. Задание примитива происходит внутри командных скобок:

void glBegin(GLenum mode)

void glEnd(void)

Параметр mode определяет тип примитива, который задается внутри и может принимать следующие значения:

GL_POINTSкаждая вершина задает координаты некоторой точки.

GL_LINESкаждая отдельная пара вершин определяет отрезок; если задано нечетное число вершин, то последняя вершина игнорируется.

GL_LINE_STRIPкаждая следующая вершина задает отрезок вместе с предыдущей.

GL_LINE_LOOPотличие от предыдущего примитива только в том, что последний отрезок определяется последней и первой вершиной, образуя замкнутую ломаную.

GL_TRIANGLESкаждая отдельная тройка вершин определяет треугольник; если задано не кратное трем число вершин, то последние вершины игнорируются.

GL_TRIANGLE_STRIPкаждая следующая вершина задает треугольник вместе с двумя предыдущими.

GL_TRIANGLE_FANтреугольники задаются первой и каждой следующей парой вершин (пары не пересекаются).

GL_QUADSкаждая отдельная четверка вершин определяет четырехугольник; если задано не кратное четырем число вершин, то последние вершины игнорируются.

GL_QUAD_STRIPчетырехугольник с номером n определяется вершинами с номерами 2n-1, 2n, 2n+2, 2n+1.

GL_POLYGONпоследовательно задаются вершины выпуклого многоугольника.

Для задания текущего цвета вершины используются команды void glColor3 4b s - фото 1

Для задания текущего цвета вершины используются команды

void glColor[3 4][b s i f](GLtype components)

void glColor[3 4][b s i f]v(GLtype components)

Первые три параметра задают R, G, B компоненты цвета, а последний параметр определяет alpha-компоненту, которая задает уровень прозрачности объекта. Если в названии команды указан тип ‘f’ (float), то значения всех параметров должны принадлежать отрезку [0,1], при этом по умолчанию значение alpha-компоненты устанавливается равным 1.0, что соответствует полной непрозрачности. Если указан тип ‘ub’ (unsigned byte), то значения должны лежать в отрезке [0,255].

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

Интервал:

Закладка:

Сделать

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

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


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

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

x