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

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

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

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

Затем, с целью выделения пветом границ первого объекта, объект рисуется как каркас с отключенным смещением. Листинг 6.11. Отклонение многоугольника для устранения артефактов: ро(уоРЕ.С 1цпаша(61 116НТ>М6>; 11(паь>е(6С С16НТВ); 11Епаше(6( РОСУООМ ОЕЕ5ЕТ Е1СС); 11Ро(укопоугае((1.0, 1.0); 11(аис(а((11»1>; 110(пап(е(6С РОСТООМ ОЕЕ5ЕТ ЕХСС); 1пиааюе(61 С16НТ>М6>; 1Ш(ааые(61 116НТЕ>; 11(о>огЗГ(1 Е, 1.0, 1.0); 11Р»1укопиоее(61 ЕКОМТ АМО 8АСК, ОС С1МЕ); 1>С»11С1»1(11»1); 1!Р»1уаопионе(61 ЕМОМТ АмО 8АСК, 61 Е(сс); В некоторых случаях «легкие в расчете» значения параметров (асуог и итсу (1.0 к 1.0) — не выход. Например, если толщина линий, выделяющих границы, больше 1, может потребоваться увеличить значение(ас(ог.

Также, если значения глубнны неравномерно преобразованы в оконные координаты в процессе перспекгнвного проецирования (см, раздел «Измененная координата глубины» главы 3), меньшее смещение нужно для многоугольников, близких к ближней плоскости отсечения, а большее — для удаленных многоугольников. Опять же, эксперименты со значением параметра могут быть оправданы. Списки отображения Из этой главы вы узнаете: ° Что такое списки отображения и как использовать их в сочетании с командами непосредственного режима с целью наиболее эффективной организации и данных и улучшенной производительности ° Как извлечь максимальную эффективность из списков отображения, применяя их в нужное время и в надлежащих местах Для чего нужны списки отображения 239 Слисок отображения (Сйзр1ау 11зг) — иначе список команд или список вывода— зто группа команд ОрепОГ., сохраненных для последующего выполнения.

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

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

° Философия проектирования списков отображения. Говорит о возможностях (таких как присвоение им статуса нередактируемых), позволяющих добиться максимальной эффективности списков отображения. ° Создание и выполнение списка отображения. Содержит подробные описания команд для создания, обработки и удаления списков отображения. ° Выполнение составных списков отображения. Показывает, как обработать последовательность из нескольких списков, здесь используется небольшой набор символов в качестве примера. ° Управление параметрами состояния с помощью списков отображения.

Иллюстрирует использование списков отображения для сохранения состояния и его восстановления с помощью команд Ореп61.. Для чего нужны списки отображения Списки отображения позволяют улучшить производительность за счет использомния запомненных для последующего выполнения команд Орепб)., Максимум отдачи дает кэширование команд в списке, если вы планируете перерисовывать один и тот же объект несколько раз или вы имеете набор изменяемых состояний, которые нужно воспроизводить многократно.

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

Эффективный способ передать вращение колес заключается в запоминании геометрии одного колеса в спискс отображе- 240 Глава 7 ° Списки отображения ния и последующем трехкратном вызове этого списка. Вам нужно построить соответствуюшую модельно-видовую матрицу перед каждым вызовом списка для вычисления корректных размеров и положения каждого колеса. Когда программы Орепб?. запускаются удаленно с другого компьютера или по сети, особенно важно кэшировать команды в списке отображения. В этом случае сервер является компьютером, отличным от хост-машины. (Информацию о клиент-серверной модели ОрепО1. см.

в разделе «Что такое Орепб1» главы 1.) Поскольку списки отображения являются частью состояния сервера и, следовательно, постоянно разме1цены на сервере, вы можете сократить расходы на передачу по сети повторно используемых данных, если сохраните повторно используемые команды в списке отображения. В варианте локального запуска вы также можете добиться повышения производительности за счет помещения наиболее часто используемых команд в список отображения. Некоторые аппаратные графические средства способны сохранять списки отображения в специально выделенной области памяти или запоминать данные в форме, обеспечивающей максимум совместимости с программным обеспечением. (Более подробно вопросы оптимизации обсуждаются в разделе «Философия проектирования списков отображения».) Пример списка отображения Список отображения — это удобный и эффективный способ именования и организации набора команд Орепб(..

Например, лопустим, что вы хотите нарисовать тор и просмотреть его с различных углов зрения. Лучший способ сделать это— сохранить тор в списке отображения. Тогда всякий раз при изменении представления вам нужно будет изменить модельно-видовую матрицу и выполнить список отображения, рисующий тор. Листинг 7.1 иллюстрирует сказанное. Листинг 7.1. Создание списка отображения: (огиз.с Г<(и1пс спеТогив; /' Рисование тора */ в(вС1с чо1О сотов(тпС пиес, !пС пиеС) ( 1пС1, ), Ооиь1е и, С, х, у, с, Снор1; сноп! (! = О; 1 < пиес; !++) ( В)аез1п(6( ()иА0 "»Та1Р); сог () = о; ) <= пиес; )++) ( Гог (К = 1; К = Е; К--) ( — (1 + К) % пиес + 0.5; с = 1 % пиес; х = (1+.

1'сов(в'(нор!/пиес))<сов(С'(норт/пиаС); у = (1». 1'сов(в'(норт/пиес))'втп((*сноп!/пиес); с = .1 5!П(5<(норт/пиес); Пример списка отображения 241 91Чег(ех3((х, у, з); 81Епб(); ) ) /' Создание списка отображения с тором и инициализация */ 5!атчс чотб !от((чо!ч!) ( (яетогцз = 916«п(!зсз(1); 31ИЕНС!Зт(СПЕТОГОЗ. 6( СОМР1СЕ); тогоз(В, 25): 31Епб3.!«С(); 813пабенобе1(6( РСАТ); 3161еагсо1ог(0.9, 6.0, 0.9, 8.0); ) ча!б б!зр1ду(чо!б) ( 3161еаг(61 СО(08 ВЧРРЕК В1Т); 31601огзт(1.6, 1.0. 1.9): 31Са11(!зт(слетогоз); 31Р1цзп(); ) ча(б ге»паре(!пт н, !пс Ь) ( 81Ч!енрогт(8, 9, (6сз!зе!) н, (6сз!зе!) Ь); 3)Масс!якобе(61 РПО)ЕСТХОИ); 31(оаб1бепт!Су(); 31ЬРегярест!«е(38, (6с(1оат) н/(61(1оас) и, 1.0, 100.9); В)Магг!хиобе(6( ИООЕСЧХЕИ); 31соаб1бепс!ту(); П)осоохяс(9, О.

10, О, 8, 9, О, 1, 9); / ° Поворот относительна оси х при нажатии клавиши «х»; вращение вокруг оси у яря нажатии клавиши «у»; прн нажатии клавиши «!» тор возвращается з оригинальное представление '/ чз!б кеуьоагб(цпз!Впеб сьаг кеу, тпс х, !пт у) ( зн!топ (Кеу) ( сазе 'х': сазе 'Х': 81йотатет(38., 1.9, 6,9.

9,9); 91цсРоз(Реб!зр1ау(): Ьгеак; сазе 'у': сазе 'у'; 9)Погасят(39.. 6.0, 1.0, 9.9); 91ц(Розсйеб!зР1аУ(): Ьгеах; продолжение бг 242 Глава 7 ° Списки отображения Листинг 7.1 (продолжение) сазе '1': саве '!': 81(оаб1бепг1Су<); Х!ц(оома!<8, 8, !8, 8, О, О, 8, 1, 8); 8!цсРозсйеб!50!ау О; Ьгеак; сазе 22; ех1с(8); Ьгеай; !пС иа1п<1пС агхс, слаг **агхч) 81цС1п!СИ1пбон51се(200, 280); 81цС1п1С(аагхс, агач); Б!ЬС<п1101881аунобе(6СВТ 5!ИВСЕ < 6<ОТ й68); 81цссгеасеи1пбои<агхч<8]): сп1с(); 8\цгйезпарегцпс<гезпаре); 8!цтхеуЬоагбгцпс<йеуЬоагб); 8!цС01зр1аугцпс<б1зр1ау); 8!ЦСИа1п(оор О: гесцгп 0; В первую очередь посмотрим на процедуру сп)С(). Она создает список отображения для тора и устанавливает начальные состояния переменных рендерингз.

Заметьте, что подпрограмма для рисования тора (со го 5 () ) обрамлена командами к!иене<В! () и й(епбес5 с (), которые определяют начало и конец списка отображения соответственно. Аргумент ЫА<апсе метода к1иеньсзс Π— это целочисленный индекс, сгенерированный командой к16еп<.15!ВО, уникальным образом идентифицирующий список отображения. Пользователь может вращать тор относительно оси х или у, нажимая клавиши )< или У, когда окно получает фокус клавиатуры. Всякий раз при этом происходит вызов функции йеуЬоагб(), которая накладывает матрицу поворота на 30' (относительно осей х и у) на текущую модельно-видовую матрицу. Команда й1цсРозтйебсзр1ау() своим вызовом влечет перерисовку тора функцией бсзр1ау() в цикле к1цснаспЕоор() после того, как будут обработаны другие события. По нажатии клавиши 1 функция йеуЬоагбО восстанавливает начальную модельно-видовую матрицу и возвращает тор в оригинальное положение. Процедура б<зр1ау() очень проста.

Она очищает окно, а затем вызывает команду к16з11Ь1 зс () для выполнения команд списка отображения. Если бы мы не использовали списки отображения, процедура бсзр1ау () выдавала бы распоряжение на перерисовку тора при каждом своем вызове. Список отображения содержит исключительно ОрепС(.-команды. В листинге 7.1 в таком списке сохранены только вызовы к1Вей1п(), я11<егтехО и к1Епб(). Их Философия проектирования списков отображения 243 параметры являются вычисляемыми, а результирующие значения копируются в список отображения перед его созданием. Все тригонометрические расчеты пропзподятся только единожды, с целью увеличить производительность рендеринга Значения в списке отображения не могут быть изменены позднее, а команда, помещенная в список, — из него удалена.

Также вы не можете добавить новые коканды в список после того, как он был описан. То есть вы вправе удалить имеющпйся список и создать вместо него новый, но не редактировать уже определенный. ПРИМЕЧАНИЕ Списки отображения хорошо сочетаются с командамн бнблнотекн 61.0, поскольку зтм операции в конечном счете разбиваются на команды Ореп6С нижнего уровня, которые проще сохранить в списке отображений. Использованне списков отображения совместно с 6Ш особенно важно для оптимизации пронзводнтельнсктн «мозанчных» команд (семепвсогп) библиотек 6ш (см.

главу 11) н НОЯВ5 (глава 12). Философия проектирования списков Отображения и с- м ст т- о- У ду 1С- се- 2.1 Их С целью поднятия производительности команды списков отображения Орели пзирруютс, причем так, что однажды созданный список отображения не может бить модифицирован. В противном случае выигрыш в производительности был бм сведен к минимуму за счет поиска по списку и лишних операций управления пмкятью. Если бы части списка отображения были изменяемыми, распределение н высвобождение памяти привело бы к дефрагментации памяти. Любые модифиппцин, внесенные реализацией ОрепОЕ в порядок команд списка отображения с цепью повышения эффективности рендеринга, все равно потребовали бы отката.

Также вероятны были бы трудности с доступом к списку, кэшированному где-нибудь в сети или на системной шине, Способ, которым достигается оптимизация команд в списке отображения, может аранроваться от реализации к реализации. Например, такая простая команда, ак и\йоса се* (), может выполняться по-разному быстро, если она помещена в сппсок отображения, поскольку вычисления для получения матрицы вращения пзлеко не тривиальны (онн могут включать в себя извлечение квадратного корня п тригонометрические функции). В списке отображения, однако, требуется сопрпненне только конечной матрицы вращения, так что время выполнения любой команды вращения из состава списка отображения обусловлено тем, насколько быстро обрабатывает аппаратное обеспечение команду П1иц)СНаСгпх'().

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

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

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

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