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

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

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

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

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

Однако если прозрачный объект находится ближе, его нужно шегнать с непрозрачным объектом. Конечно, можно определить должный поря(ох рисования многоугольников, когда сцена неподвижна, но при перемещении )вблюдателя или объекта эта проблема вырастает в практически неразрешимую. 210 Глава 6 ° Смешивание, сглаживание, туман и отклонение Решение кроется в использовании буфера глубины в режиме «только для чтения» при рисовании прозрачных объектов. Сначала рису!отея все непрозрачные объекты в обычном режиме доступа к буферу глубины.

Затем устанавливается запрет на изменение значений в буфере глубины. Когда рисуются прозрачньн обьекты, их глубина также сравнивается с сохраненными в буфере значенияма для непрозрачных объектов, то есть прозрачные объекты не рисуются, если расположены за непрозрачными. Если же они ближе к точке обзора, это не отбрасывает непрозрачные объекты, так как буфер глубины не может быть изменен. Для управления режимом доступа к буферу глубины предназначена функция а10ер(ПИ а за () . Если в качестве аргумента ей передать значение 61 РАЕ 5 Е, буфер переходит в режим етолько Лля чтения», а значение 61 Тй()Е восстанавливает нормальный режим, разрешая запись. Пример использования этого метода для рисования непрозрачных и прозрачных трехмерных объектов приведен в листинге 6.3.

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

Трехмерное смешивание: а(рлаЗЕ).с №Оегзпе МАХЕ 8.8 №Оетзпе И!МЕ -8.0 №оегзпе Е!МС 0.4 »сат!с (1оа1 зо1107 = МАХЕ; »за(!с 11оас 1гапзрагеп(Е = И1МЕ; »Саззс 6спзпс арпеге((»1, сооесз»1; 5(атзс чозе зпз1(чозо) ( 6С(1оас еас аресо1аг() = ( 1.0, 1.8, 1.0, 0.15 61(1оаз еаз апзп!пе»з[] = ( 100.0 ); 6((1оас роз!с!оп() = ( 0.5, 0.5, 1.0, 0.0 ); 81насегза1!ч(6С РМОМТ, 6( 5РЕСОСАН, пас зреси1аг); 81на1егза1(ч(6С РНОНТ, 61 5Н1М1МЕ55, аа1 зпзпзпееч); 81(зхпс(ч(6С 116НТО, 6С РО51Т!ОМ, ро»!(!оп); 61Епаьзе(6( С16НТ1М6); 61Епаь)е(6С (16НТВ); 81Еп»озе(6С ЬЕРтН ТЕ51)З зрпегесз»1 = 616епс!»Са(1): 81нечзс!»1(зрпеге(з»1, 61 СОИР!СЕ): 61и(5о1зз)5рпеге(8.4, 16, 16); 81Еппс! ас(); сове(!»1 = 616епсзч1»(1); 61нен(ззС(сьье(з»1, 6С СОИР!СЕ); 81и(5о1(есоье(8.6); 81Епоь(зс(); ) 212 Глава 6 ° Смешивание, сглаживание, туман н отклонение Листинг 6.3 (продолжение) зо1!бЕ =- Е1МС; сгапзрагеп(Е += 71МС; 51исро»1Йеб!»р1ау() ! ) чо!б кеуьоагб(ипз!абеб сьаг хеу, !п1 х, !пс у) ( зи!(сп (Кеу) ( сазе 'а': са»е 'А': зо1!б7 = МАХЕ: Сгапзрагеп(Е = М1МЕ; в1и1101еуипс(ап!васе); Ьгеах; сазе 'г': сазе 'Й': 5011бЕ = МАХЕ; сгапзрагептЕ = М1МЕ; 51итрозсаеб! »р1ау (); Ьгеах; сазе 27: ех!1(е); ) Ьгеа)с; ) !пт аа!п((пт агас, спаг'* агач) ( 51и11п)с(аагас, агач); а(ис)п!10!»р)аумобе(ссит ооовсе ! Осот Йов ~ 0(от 05Ртн); 51ис(п!1Н!пбои5(те(500, 500); 51иссгеа1еи! обои(агач(9) ); чп!1(); а1исаезпарегипс(ге»ларе); а1итхеуиоагбгипс(хеуьоагб); 51ито!»р1аурипс(б!»р1ау); В1исна!псоор(): ге!игл 0; Сглаживание Как вы уже могли заметить, в некоторых написанных вами программах линии на рисунках, особенно почти горизонтальные или почти вертикальные, кажутся зубчатыми.

Эта «зубчатость» возникает из-за того, что идеальная в теории линия на практике составлена из групп пикселов, которые выстраиваются на пиксельной сетке. В дг ном разделе описаны технологии для устранения втой ступенчатости (ее уменьшения). На рис. 6.2 изображены две пересекающиеся линии, как в исправленнс 1, так и в исходном виде. Изображения масштабированы для большей наглядности. Сглаживание 213 Рис. 6.2.

Ступенчатые и сглаженные линии Ни рис. 6.3 показано, что диагональная линия толщиной в 1 пиксел некоторые пвкселы перекрывает больше, чем остальные. Фактически при выполнении сглаживания ОрепС1. вычисляет значения локргытия для каждого фрагмента па осювании площади пикселов, охваченной линией.

На рис. 6.3 также приведены эти пиления покрытия для рисуемой линии. В режиме НОВА ОрепСВ умножает впвчение альфа-компонента для фрагмента на значение покрытия. Затем полувввшееся значение может быть применено лля смешивания фрагмента с соответпвующим пикселом, хранимым в буфере кадров. В режиме индексации цвета ,ОрепСВ устанавливает младшие четыре бита в индексе цвета на основе степени покрытия фрагмента (0000, если покрытие отсутствует, н 1111 — прп полном охмте).

Задачей программиста является заполнение карты цветов и использование ного свойства для получения нужного эффекта. Нодробности вычисления значений покрытия достаточно сложны, их трудно предпввнть в общем виде, так как они существенно зависимы от реализации ОрепС1.. Выработать компромисс между качеством изображения и скоростью выполнения ООИОГаЕт фуНКцИЯ 81Н1лг О; с ней полезно поупражняться, но не все реализации се поддерживают. А .040510 В .0405!О С .878469 0 .434259 Е 007639 Е 141435 6 .759952 Н 759952 1 141435 .007639 К .434259 878469 М .040510 И 040510 Рис.

6.3. Определение степени покрытия уоЫ 81НО лС(С1.епцш Гагйей С1.еппш 1ппг); Управляет рядом режимов работы ОрепСВ. Аргумент гагяег идентифицирует подконтрольный режим, его возможные значения перечислены в табл. 6.3. Аргумент лглс может принимать следующие значению ВЕ ЕА5ТЕК для отдания предпочтения скорости обработки, 6Е Н1СЕ5Т с целью постижения наивысшего качества или 6Е 00НТ САКЕ для снятия всех требований. Интерпретация 214 Глава 6 ° Смешивание, сглаживание, туман и отклонение подсказок зависит от реализации.

Некоторые реализации ОрепС1. могут на них не реагировать. Значение аргумента Гагцес 6С РЕК5РЕСТ1УЕ СОККЕСТ10М Н1МТ связано с интерполяцией значений цвета и координат текстур вдоль примитива: или линейно в пространстве экрана (относительно простые вычисления), или с нахождением правильной перспективы (что требует больших усилий). Часто системы выполняют линейную интерполяцию цвета, поскольку результаты, являющиеся технически не совсем корректными, визуально приемлемы.

Однако в большинстве случаев текстуры требуют максимально пригодную интерполяцию по перспективе. Таким образом, реализация ОрепС1. может задействовать этот параметр для управления методом интерполяции. (См. главу 3 для справки о перспективной проекции, главу 4 для получения информации о цвете и главу 9 по вопросам текстурирования.) Таблица 6.3. Значения аргумента тагрет функции д!Н)пт() Значение Применение 6( Р01МТ 5МООТН Н1МТ,ОЕ Е1МЕ 5МООТН Н1МТ, Управление качеством сглаживания точек, 6Е РОГУООМ 5МОООТН Н1МТ линий или иногоугольников 6С Е06 Н1МТ Указывает, выполнять ли вычисления при наложении тумана по пикселам (61 М1СЕ5Т) или по вершинам (6С ЕА5ТЕ5Т) Качество интерполяции координат при вычислении цветов и наложении текстур Качество и производительность автоматической генерации М1РМАР-текстур Качество и производительность сжатых текстурных изображений 66 РЕКЗРЕСТ1УЕ СОККЕСТ10М Н1МТ 6Е ТЕХТОКЕ СОМРКЕ5510М Н1МТ Сглаживание точек или линий Сглаживание в режиме ГсбВА В режиме РСВА необходимо включить смешивание.

Обычно используются сле- дующие факторы влияния: 6С 5РС АСРНА для источника и 6С ОМЕ Н1М05 5ЙС Одним из способов устранения ступенчатости для точек или линий является включение сглаживания с помощью вызова функции 61Епа(з(е О со значением аргумента6С Р01МТ 5НОООТН или 6С С1МЕ 5НООТН для точек и линий соответственно. Кроме того, функция д1Нт пт () позволяет управлять качеством сглажива.

ния. (Напомним, что размер точки и толщина линии являются настраиваемыми. Кроме того, можно создавать прерывистые линии. См. раздел «Подробно о линнях> главы 2.) Затем выполняется алгоритм, описанный в одном пз следующих разделов, в зависимости от режима работы (зсСВА или индексированных цветов). Другой техникой сглаживания точек или линий является технология мультивыборки, описанная в разделе «Сглаживание геометрических примитивов с помощью мультивыборкиь этой главы. Сглаживание 21Б А[РВА для получателя.

Альтернативный способ: если значения альфа-компонента Едя получателя установить в 6С ОМ Е, линии в местах пересечения будут более ярками. Сглаживание тем более заметно, если используются большие альфа-значе(гдя. Помните, что поскольку вы выполняете смешивание, вероятно, нужно ]честь порядок рисования, как было показано в разделе «Трехмерное смешиваане с использованием буфера глубиныю Одаако в большинстве случаев порядок рисования можно не учитывать, и это не окажет каких-то нежелательных эффектов.

Программа в листинге 6А инициализирует нужные режимы для сглаживания, а затем рисует две пересекающиеся диагональные линии. Когда программа запущена, с помощью клавиши г можно вращать линии для того, чтобы оценивать их выравнивание при различных углах юклона. Обратите внимание, что в этом примере мы обходимся без буфера глубнны и отключили его. Листинг 6.4. Сглаженные линии: аагдЬ.С зсэт!с (1оаС гоСАп91е = О.; Л Инициализируем сглаживание для режима Й6ВА, включая эльфа-смешивание, указания режима работы и толщины линии.

Выведем значения детализации и толщины линии, зависимые от реализации чо\Е !п(с(чозо) ( 6[(1оаС ча1цез(2]; 916еСР1оасч(6С С]МЕ И[ОТН 6ЙАМОСАЙ]ТУ, ча]цез); рг!пс(("6С (1МЕ И!ОТН 6ЙАМОСАЙ1ТУ равно %3.1()п", ча1цез[ В ]); 916есР1оатч(6С С!МЕ ИТОТН ЙАМОЕ, ча]цез); рг(пСГ("6С С1МЕ И]ОТН ЙАМ6Е равно %3. 1Т %3.1Г(п", ча1цез[0], ча1цез[1]); 91Епаще(6С С1МЕ 5НООТН); 91Епаще(6С ВСЕМО); 91В1епбрцпс(6С 5ЙС АСРНА.

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

Список файлов книги

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