Главная » Просмотр файлов » OpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д

OpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д (1124475), страница 53

Файл №1124475 OpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д (Раздаточные материалы) 53 страницаOpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д (1124475) страница 532019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 53)

В этом случае список отображения разрушается, когда уничтожается последний контекст в общей группе. Что сохраняется в списке отображения? Когда вы формируете список отображения, в нем сохраняются только значения вырзжений. Если значения в массиве впоследствии изменяются, значения в спи- 248 Глава 7 ° Списки отображения оке изменяются также. В следующем фрагменте кода список отображения содер- жит команду, устанавливающую в качестве текущего цвета РСВА черный — (0.0, 0.0, 0.0).

Последующее изменение значения массива со[от ресгог на красный цвет (1.0, 0.0, 0.0) не оказывает эффекта на список отображений, поскольку последний содержит значения, которые были актуальны на момент его создания: 6[11оат со1ог чесгаг[3) = [б.о, 6.0, В,О); д[ненс$кг[1. ВС СОНР[СЕ>; 91Со1огзтч[со[ог чесгог); 91ЕпОС$ат(); со1ог чесгог[81 = 1.6; Не все комшцгьг ОрепСЕ могут быть помещены в список отображения и выполнены таким образом. Например, ими не могут быть команды, которые устанавливают состояние клиента, и команды, возвращающие значения параметров состояния.

(Их в основном легко опознать — так как они возвращают значения параметров, передаваемых по ссылке, или возвращают значения напрямую.) Такие команды при включении их в список отображения выполняются немедленно. В табл. 7.1 перечислены команды ОрепС[., которые можно включить в список отображения. (Заметьте, что 91кеиС $ зт() генерирует ошибку, если она вызывается изнутри еше не завершенного списка.) Некоторые из этих команд нами еше не рассматривались, но вы можете найти их описание в тексте книги с помощью предметного указателя. Таблица 7.1. Функции Орепбс, допустимые к помещению в списке отображения Для четкого понимания причины этих ограничений вспомните, что в сетевом окружении клиент ОрепСЕ может находиться на одном компьютере, а сервер — на другом. Созданный список отображения постоянно хранится на сервере, таким образом, сервер не может рассчитывать на клиента в плане получения информации, связанной со списком отображения.

Если запрашивающие команды, такие как 916ет' () или 911з ' О, разрешить к использованию в списках отображения, вызывающая программа будет зависеть от непредсказуемости времени возврата данных через сеть. Пока у нее не будет списка отображения в оригинальном виде, 9[АгеТехтцгекдек(сепг() 9[С[$епгдс1$чеТех1цгеВ 91Со[огРЫпгег() 9[Ое[егеС[вта() д !Ое[егеТехтцгек() 901$ааЫеСбеп!51аге() д[Ег)деЕ[адро[п[ег() д[ЕпаЫеСбеп151аге() д!Реег[Ьаскдц([егВ 9[Е[п[5Ь() 9[Р[ц5Ь() 9[ЕодСоогг)ро[п!ег() д[депВвм() 9[дептехгцгевВ 9!Вес*!) 9[[пг[ехРо[птег() 9$[псег[еачег[АггаукВ 9[[кЕпаЫег[() д[Ы.)кг() дНктехгцгеВ 9$$[оппа[Ро(псег() д[Р[хе[51оге() д!РорСбепгАПпЬ() 9[РцкЬС[[ептА11пЬ() 9[Реаг[Р)хе[к() 9[Репг[егмог[еВ 9$5есопбагуСо[огРо(пгег() 9$5е[естВо((ег() 9[техСоогг[Ро[пгег() д!ЧекехРо[птег() Создание и выполнение списка отображения 249 з каком он послан, вызывающая программа не будет знать, где ей разместить дандме.

Таким образом, любые команды, возвращающие значения, не могут быть помещены в список отображения. Команды, изменяющие состояние клиента, такие к>к д1Р! хе15(о ге (), к15е1есгвит(ег (), и команды, описывающие массивы вершнн, также не могут быть сохранены в списке. Например, подпрограммы спецификации вершин массива (такие как к1че ггехРд1пгег О, д1Со1огРо! пге г О и д11пге г1еачеПАг гауз О ), устанавливают укамтелн состояния клиента и тоже не могут быть сохранены в списке отображения.

Команды д1АггауЕ1евеп(О, д10гаиАггауз() н д10гаиЕ1емептэо посылают данные для построения примитивов из элементов, принадлежащих доступным массивам, соответственно, эти операции могут быть сохранены в списке отобракения. (См. Раздел «Массивы вершин» главы 2.) Данные массива вершин, сохраювные в списке отображения, извлекаются через разыменование указателей, но де непосредственно. Таким образом, дальнейшие изменения значений в вершидкт не будут влиять на определение примитивов в списке отображения. К влияющим командам относятся и любые команды, использующие режимы юхранения пикселов (р!херзсогайе шог(ез).

(См. раздел «Режимы хранения пик(гдов» главы 8.) Другие подпрограммы, полагающиеся на состояние клиента, там>е как д1Е1оэп О и д1Г! и! зв О, не могут быть сохранены в списке отображеви, поскольку они зависят от состояния клиента в момент обработки списка. Зыполнение списка отображения Весле того как вы создали список отображения, вы можете запустить его на выпслнение вызовом д1С а111 ! это. Разумеется, один и тот же список отображения южно выполнять многократно, а также можно смешивать его обработку с командщв непосредственного режима, как мы это уже видели. чо(П Е1Са11С!э1(ОЕп!пс)мГ); Выполняет список отображения, указанный аргументом 1(зг.

Команды списка отображения выполняя>тся в порядке своего сохранения, как если бы списка отбражения и не было. Если аргумент Ы не определен, ничего не происходит. Вмможете вызывать д1Са111! зт() из любой точки программы, пока активен сомветствующий ему контекст Ореном (тот же, что был активен на момент создажи списка, или контекст из общей группы). Список отображения может быть авдан в одной подпрограмме, а выполнен — в другой, благодаря его уникальной здеятнфикации по индексу. Л вот для сохранения списка отображения в файле ыв, наоборот, для загрузки его из файла средств не имеется. Это лишнее подперждение временного характера списков отображения.

иерархические списки отбражения Зм можете создать иерархический список отображения, в котором изнутри однощспнска отображения — между д1меиЕ ! эт() и д1ЕпбЕ! э1() — выполняется выдв других списков той же командой д1Сз11С ! зт () . Иерархически упорядочен- 250 Глава 7 ° Списки отображения ные списки полезны для объектов, составленных из готовых компонентов, особенно если последние используются больше одного раза. Например, следующий список отображения выводит велосипед, причем отдельные детали конструкции велосипеда (руль, рама и колеса) отображаются собственными списками: а!Мень!яс(!!зС)паек,6( СОМР!СЕ); к1са»С!зС(лапа1епагз); а1Са11(!зс(ггаае); к1тгапз1аге((1.0, В.О, 0.8); 61Са»С!яС(илее1); к1тгапя!агес(3.0, 0.0, 0.0); 6)са» Ссяс(ипее!); Е(Елани.!яС(); Это не позволит вам реализовать полноценную глубокую рекурсию, так как вложенность списков отображения ограничена значением 64, но это число может быть и больше, в зависимости от реализации. Для получения информации о максимальной вложенности списков для конкретной реализации Ореп01 воспользуйтесь вызовом ((16ес1псекегч(6( мАх (15т ме5т1м6, 61!пс *аз!а); Орепб).

позволяет создавать списки отображения, которые вызывают еще не существующие списки. При этом ничего не происходит. Наконец, иерархическая структура — просто удобное средство компоновки нескольких списков более низкого уровня в смысле послелующего редактирования, как в дистинге 7.3. Здесь внешний список отображения объединяет описания отдельных вершин многоугольника. Листинг 7.3. Иерархический список отображения 61нень!яС(1,61 СОМР1(Е); 61Чег(ехзгч(ч1): Е1ЕпаС!яС(); Е1Меис!ЯС(2,6( СОМРХ(Е); 61Чеггех3(ч(ч2); 6!Ела(!яС(); М!Меис!зс(3,6С СОИР!СЕ); Е1Чеггех3(ч(чз); а!Епа(!яС(>; а1иеиь!4С(4,61 СОМР1(Е): а!Вез!п(6( РОСЧООМ); асса»(ся(( 1>; 61са111!яС(2): 61са11(! яС(3); 6!Ела(); 6!Ела!!я!(); Чтобы воспроизвести многоугольник, вызывается список с номером 4.

Чтобы от. редактировать отдельную вершину, нужно всего лишь пересоздать соответствующий этой вершине вложенный список. Удобно то, что, когда вы создадите новый список под старым индексом, сусцествующий список автоматически будет ула. Выполнение составных списков отображения 251 нен. Это не значит, что распределение памяти будет оптимальным для достиженнн максимальной производительности, но в иных случаях зто лучше чем ничего. С1Ьоо)еап я11нг1нг(СЕн1пС 1мг); Возвращает 6Е ТМОЕ, если аргумент Ы представляет уже используемый ин- декс, и 61 ЕА15Е в противном случае. Вм можете явно удалить указанный список отображения или набор списков с по- следовательными индексами при помощи вызова х10е1егее1нгнО.

Соответст- нующис индексы становятся снова доступными. то1П 610е1еге11нгн(СЕшп1 Ы, С(л(ге) галде) Удаляет заданное количество (галде) списков отображения, начиная от задан- ного индексом Внг. При попытке удаления несуществующего списка ничего не происходит. выполнение составных списков отображения ОрепСЬ предоставляет эффективный механизм последовательного выполнения нккольких списков отображения.

Этот механизм требует, чтобы вы поместили нндексы списков в массив и воспользовались вызовом я16а11е1нгн (), Очевидню, что применение данного механизма имеет смысл в случае, когда индексы сонтнетствуют каким-либо выразительным значениям. Так, если вы создаете шрифт, пждый индекс будет ассоциирован с АБСП-кодом символа шрифта.

Чтобы иметь несколько таких шрифтов, вам нужно задать для них различные начальные индексы, а сделать это легко с помощью вызова х111 нгВане() перед выполнением 11СнП11нгн(). ной н111 нгване(СЕп1п( бане); Задает смещение, добавляемое к индексам списка отображения. По умолча- нию принято значение О. Это смещение пе имеет эффекта пи на команду н1Са1111 н ГО, примененную к одиночному списку отображения, ни на коман- ду н1йем11нг(). нок( н16а1111нгн(С1н1ге1 и, СЕеппш Гуре, сопл( СЕчоЫ *ЪЬ); Выполняет л списков отбраження.

целевые индексы вычисляются путем сло- вения базового смещения (заданного х11! згване()) с целыми числами мас- сива, указанного аргументом Ъй. эт- юый да- 1ргумент гуре обозначает тип данных элемента массива; 6е Втте, 6е ОМ516йе0 1(ТЕ, 61 5НОНТ, 61 ОМ516МЕО 5НОКТ, 61 1МТ, 61 ОМ516МЕО 1МТ или 6Е РЕОАТ. Управление индексацией списков отображений Пока что мы советовали не пренебрегать командой к16еп1! нгн(), чтобы всегда быть уверенными в уникальности индексов списков отображения. Если это по аким-либо причинам вас не устраивает, воспользуйтесь командой я\1нЕ!нг(), позволяющей узнать, свободен ли указанный индекс.

Характеристики

Тип файла
PDF-файл
Размер
56,35 Mb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6401
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее