Студопедия — Дисплейные списки OpenGL
Студопедия Главная Случайная страница Обратная связь

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

Дисплейные списки OpenGL

Руководитель Аппарата

Исполнительного комитета г.Казани И.В.Сивов

Новгородская область г. Боровичи, ул. Ленинградская д. 28

Реестровый номер ВНТ 011193

Тел/факс 8(81664) 201-89, 201-15

e-mail: [email protected]

 

ГРАФИК АВТОБУСНЫХ ЭКСКУРСИОННЫХ ТУРОВ ЛЕТО 2015

13.06.15 Кронштадт «Город морской славы»

20.06.15 Любытино «Славянская деревня»

21.06.15г. Валдай «Уездный город»

27.06-28.06.15г. «Псковские жемчужины» Псков-Изборск-Печеры-Пушкинские горы (ночлег на б/о «Пушкиногорье») экскурсии и питание по программе 2 дня.

03.07-05.07.15г. «Русь святая» Нижний Новгород-Дивеево-Владимир-Суздаль (ночлег в гостинице Н. Новгород) экскурсии и питание по программе 3 дня.

04.07.15г. Петергоф «Дворцы и фонтаны»

05.07.15г. Кончанское Суворовское + купание на озере

11.07.-12.07.15 «Там на неведомых дорожках» Торжок-Берново-Осташков-Селигер-Нилова Пустынь-Исток Волги-Вышний Волочек (ночлег в Осташкове) 2 дня.

17.07-19.07.15г. «Дивные места Карелии» Петрозаводск-Заповедник Кивач- о. Кижи- Сортавала «Мраморный каньон» (ночлег в Петрозаводске) 3 дня.

18.07.15г. Кронштадт «Город морской славы»

25.07-26.07.15г. СПб. «День военно-морского флота» 2 дня.

25.07.15г. Любытино «Славянская деревня» + водопад

26.07.15г. Старая Русса «Краса Новгородчины»

01.08-02.08.15г. «Легенды старого Выборга» 2 дня.

01.08.15 Валдай «Уездный город»

08.08-09.08.15г. о. Валаам+ Сортавала «Мраморный каньон» целый день на о. Валаам (ночлег в Сортавале) 2 дня.

08.08.15г. Петергоф «Дворцы и фонтаны»

09.08.15. В. Новгород + теплоходная прогулка

14.08.-16.08.15. «Малое золотое кольцо России» Углич-Ростов-Переславль Залеский-Сергиев Посад (ночлег в Ростове и Переславле Залеском) 3 дня.


ПРОДОЛЖАЕТСЯ НАБОР ГРУПП НА ОДНОДНЕВНЫЕ ЭКСКУРСИОННЫЕ ТУРЫ из БОРОВИЧЕЙ!!!
- 2 МАРТА ВЕЛ. НОВГОРОД "МАСЛЕНИЦА В ВИТОСЛАВИЦАХ"
- 9 МАРТА СПб. ЭРМИТАЖ " Бриллиантовые кладовые"
- 23 МАРТА СПб. Уникальный музей "ГРАНД МАКЕТ"
- 29 МАРТА СПБ. "ДЕЛЬФИНАРИЙ и МУЗЕЙ ВОДЫ"
Показать полностью..

ПО ВЫХОДНЫМ ПОЕЗДКИ В ВАЛДАЙ: ИВЕРСКИЙ МОНАСТЫРЬ и ЛЕДОВЫЙ ДВОРЕЦ "КРИСТАЛ" (катание на коньках). 15.08.15г. Тихвин «История одного города»

22.08.15г. Пушкин-Павловск (парки, дворцы, янтарная комната)

23.08.15г. Православные святыни В. Новгорода (три монастыря)

29.08.15г. СПб. «Город на Неве»

Подробная информация и запись по телефонам 8-(81664) 201-89, 201-15, 8- 950-681-10-83

 

Дисплейные списки OpenGL

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

 

Создание дисплейного списка

Чтобы создать дисплейный список нужно:

1. Cгенерировать и сохранить уникальный номер дисплейного списка

2. Между вызовами функций glNewList() и glEndList() единожды визуализировать необходимую графику

3. Теперь в функции, отвечающей за визуализацию кадра, достаточно вызвать необходимый дисплейный список с помощью команды glCallList

 

Список отображения (дисплейные списки) – это группа команд OpenGL, сохраненная для дальнейшего исполнения. Когда исполняется список отображения, команды, включенные в него, исполняются в том порядке, в котором они были заданы. Большинство команд OpenGL могут быть как сохранены в списке отображения, так и выполняться в непосредственном режиме, в котором они выполняются немедленно. В одной программе вы можете смело смешивать код непосредственного режима с использованием списков отображения. Во всех примерах программ до этого момента все команды исполнялись в непосредственном режиме.

 

РАБОТА СО СПИСКАМИ ИЗОБРАЖЕНИЙ

В OpenGL предоставляется возможность объединять группу команд под определенным именем для последующего выполнения. Это обеспечивают списки изображений (дисплейные списки). Они подобны подпрограммам и являются удобным средством для кодирования больших систем со сложной иерархией. Список организуется командами:

void glNewList (GLuint list, GLenum mode)

void glEndList ()

Эти команды выглядят, как операторные скобки. Первая команда является заголовком (началом) нового списка изображений. Список заканчивается командой glEndList(). Параметр list представляет собой целочисленный идентификатор – имя списка. Параметр mode – символическая константа, определяющая следующие режимы сборки списка:

Константа Режим сборки списка
GL_COMPILE СПИСОК КОМАНД ТОЛЬКО КОМПИЛИРУЕТСЯ (НАКАПЛИВАЕТСЯ) ДЛЯ ВОЗМОЖНОГО ПОСЛЕДУЮЩЕГО ИСПОЛЬЗОВАНИЯ  
GL_COMPILE_AND_EXECUTE Команды исполняются и только потом заносятся в список

OpenGL компилирует список изображений только один раз, после этого он готов к применению. Поэтому мы получаем увеличение скорости при использовании списков изображений. Порядок, в котором команды располагаются в списке изображений, жестко определяют порядок, в котором они будут выполняться.

Вызов списка изображений осуществляется командой:

void glCallList (GLuint list)

Параметр list задает целочисленное имя списка изображений.

Рассмотрим пример подготовки и вызова списка изображений.

// Открываем список изображений (без выполнения) под номером 2

glNewList(2,GL_COMPILE);

glColor3f(1.0f, 0.0f,0.0f); // Задаем цвет создаваемого примитива

glBegin(GL_POLYGON); // Задаем сам примитив

glVertex3f(1.0f, 1.0f, 0.0f);

glVertex3f(–1.0f, 1.0f, 0.0f);

glVertex3f(–1.0f, –1.0f, 0.0f);

glVertex3f(1.0f, –1.0f, 0.0f);

glEnd();

glEndList(); // Закрываем список изображений под номером 2

glCallList(2);

В список можно включать вызовы уже готовых списков изображений. Рассмотрим список из двух

вызовов готовых списков 1 и 2:

// Открываем список изображений (без выполнения) под номером 1

glNewList(1,GL_COMPILE);

glColor3f(0.0f, 1.0f,0.0f);

glBegin(GL_TRIANGLES);

glVertex3f(1.0f, 2.0f, 0.0f);

glVertex3f(–1.0f, 2.0f, 0.0f);

glVertex3f(–1.0f, –2.0f, 0.0f);

glEnd();

glEndList();

// Открываем список изображений (без выполнения) под номером 2

glNewList(2,GL_COMPILE);

glColor3f(1.0f, 0.0f,0.0f);

glBegin(GL_TRIANGLES);

glVertex3f(1.0f, 1.0f, 0.0f);

glVertex3f(–1.0f, –1.0f, 0.0f);

glVertex3f(1.0f, –1.0f, 0.0f);

glEnd();

glEndList();

// Открываем список изображений (без выполнения) под номером 3

glNewList(3,GL_COMPILE);

glCallList(1);

glCallList(2);

glEndList();

// Вызов списка 3

glCallList(3);

Для выполнения сразу нескольких готовых списков используется команда:

void glCallList (GLsizei n,

GLenum type,

Const GLvoid *lists)

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

 

Константа Тип значений в списке имен изображений
GL_BYTE ПАРАМЕТР LISTS ЯВЛЯЕТСЯ УКАЗАТЕЛЕМ НА МАССИВ С БАЙТОВЫМИ ЭЛЕМЕНТАМИ, ПРИНИМАЮЩИМИ ЗНАЧЕНИЯ В ДИАПАЗОНЕ [−128, 127]
GL_UNSIGNED_BYTE Параметр lists является указателем на массив с положительными байтовыми элементами, принимающими значения в диапазоне [0, 255]
GL_SHORT Параметр lists является указателем на массив с двухбайтовыми элементами, принимающими значения в диапазоне [−32768, 32767]
GL_UNSIGNED_SHORT Параметр lists является указателем на массив с положительными двухбайтовыми элементами, принимающими значения в диапазоне [0, 65535]
GL_INT Параметр lists является указателем на массив с четырехбайтовыми целыми элементами и т.д. (см. MSDN)

 

Перед вызовом команды glCallLists можно задать постоянное смещение к каждому имени списка изображения из массива lists. Это выполняется командой

void glListBase (GLuint base)

где base – целочисленное смещение. По умолчанию это смещение равно нулю.

Как уже было показано в примере, команды glCallList и glCallLists могут быть вложены в другие списки изображений. Уровней вложения не может быть больше 64.

При работе со списками, особенно при формировании шрифтов, приходится следить за номерами создаваемых списков, что не всегда удобно. Эту проблему легко разрешает функция glGenList, генерирующая непрерывный набор пустых дисплейных списков. Рассмотрим формат записи этой команды.

GLuint glGenList (GLsizei range)

Параметр range определяет количество пустых дисплейных списков, которые необходимо сгенерировать. Функция glGenList возвращает целое число n, которое является именем первого дисплейного списка. Если range больше 1, то также будут созданы пустые дисплейные списки с именами n+1, n+2,…, n+range−1. При нулевом значении range функция glGenList вернет значение 0 и никакой дисплейный список не создастся.

В ходе выполнения программы можно удалять непрерывную группу имен списков изображений.

Допустим, имеется группа имен, например: 1, 3, 4, 5, 6, 8, 9, 10. Мы можем удалить из этой группы любую непрерывную последовательность имен списков, например, 4, 5 и 6. Для этого необходимо воспользоваться специальной командой

void glDeleteLists (GLuint list, GLsizei range)

где list – целое число, являющееся именем первого удаляемого списка изображений, range – количество удаляемых списков.

Для приведенного выше примера, оформление команды glDeleteLists выглядит следующим образом: glDeleteLists(4,3).

Ход работы:

1. Нарисовать коробок спичек, используя дисплейные списки.

2. На каждый объект коробки спичек (в том числе и сами спички) наложить текстуру.

3. К нарисованному объекту применить:

· Поворот;

· Масштабирование;

· Перенос;

· Каркас объекта;

· Обрезка объекта;

· Выдвижение/задвижение внутренней части короба.

4. Запрограммировать освещение объекта, используя создание источника света (возможность включения/выключения света).

 

 

 




<== предыдущая лекция | следующая лекция ==>
Основные операции | Тесты для 1-го рубежного контроля знаний по Основам экономической теории

Дата добавления: 2015-10-19; просмотров: 1229. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Упражнение Джеффа. Это список вопросов или утверждений, отвечая на которые участник может раскрыть свой внутренний мир перед другими участниками и узнать о других участниках больше...

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

Общая и профессиональная культура педагога: сущность, специфика, взаимосвязь Педагогическая культура- часть общечеловеческих культуры, в которой запечатлил духовные и материальные ценности образования и воспитания, осуществляя образовательно-воспитательный процесс...

Устройство рабочих органов мясорубки Независимо от марки мясорубки и её технических характеристик, все они имеют принципиально одинаковые устройства...

Ведение учета результатов боевой подготовки в роте и во взводе Содержание журнала учета боевой подготовки во взводе. Учет результатов боевой подготовки - есть отражение количественных и качественных показателей выполнения планов подготовки соединений...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия