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

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

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

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

В этом случае маска трафарета заполняется нулями, а требуемая форма инициируется единицами в буфере трафарета. Вы можете определить геометрическую фигуру непосредственно в буфере трафарета, но тот же результат дает и рисование в буфер цвета вместе с выбором подходящего значения для функции гразз (такого как 6Е КЕ РЕАСЕ). (Для рисования пикселов напрямую в буфер трафарета используется команда 910ганР! хе15().) Во время рисования значение также записывается в буфер маски (в нашем случае эталонное значение). Чтобы рисование в буфер трафарета не отражалось на содержимом буфера цвета, сбросьте маску цвета в 0 (или 61 РАЕ5Е). Вы вправе отключить также запись в буфер глубины.

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

Листинг 10.1. Использование теста трафарета: 5(епс![.с Еое([пе УЕЕЕОНИАТ 1 Едет(пе ВЕОЕИАт 1 чо(Е (п! 1(чо(Е) 61(]пег уешпн Ы ((чае[] = ( 9.1, 9.1, О.в, 1.9 ]; 61(1ра( уе\[ои зреси1аг [] = ( 1.0, 1.9, 1.0, 1.9 ); 6Е(1оа( Ыие Е(((ьзе[] = ( 0.1, 9.1. 9.7, 1.9 ]; 61(1оа( Ыче зресч1аг[] = ( 0.1, 1.0, 1.0, 1.0 ); 6Е(1оа1 роз(1(оп опе[] = ( 1.0, 1.9, 1.0, 0.0 9)мены зг(чессомиАТ, щ сомР[ее); 9[на(ег(е)тч(61 РКОМт, 61 0[РР05Е, уещпч О(тупее); 9]ма(ег1а[(ч(61 РКОМт, 6е 5РЕСО[АК, уешпн зресщаг); 9[ма(ег1а]т(6С РКОМт, а. 5Н[М[МЕ55, 94.О); 91Епсш 41(); 9]иенш з1(ВЕОЕМАТ, 6С СОМР!ЕЕ); 91иа(ег1а1(ч(61 ЕКОМТ, 6Ь 01РР05Е, Ыие 01((чае); 91иатег(а1(ч(61 ЕКОМТ, 61 5РЕСШАК.

Ыие зресн1аг); 91иа1ег(а1((61 РКОМТ, 6Е 5Н1М[МЕ55, 45,9); 91ЕпсН.(з1(),' Тесты и операции над Фрагментами ЗЯЯ 8>(твисту(6с ыонте, Ос Р051Т>ом, розтстоп опе>; 81ЕпаЫе(6С 116НТВ); 81ЕпаЫе(6С П6НТ1М6); 81ЕпаЫе(61 0ЕРТН ТЕЕТ); 81С1еаг51епст 1(охв); 81ЕпаЫе(6С 5ТЕМС1С те5т); > /' Рисование сферы в ромбовидный контур, ' в центре окна с двумя торами, то1б бтзр1ау(чотб) ( 81С>еаг(66 СОСОК ВОРРЕК В>т ~ 6С ОЕРтН ВОЕЕЕК В>т>; /' Там, где единицы, рисуется синяя сфера '/ 5151епс11Ецпс(6С ЕЦОАЫ Ох1, Ох1); 815Сепс(10р(61 КЕЕР, 61 КЕЕР, 6С КЕЕР); 81Са11Стзс(ВСОЕМАТ); 51и(5о1т'б5рбеге(8.5, 15, 15); /' Если не единицы, рисуются торы */ 815тепс(1Рцпс(6С МОТЕООАС, Вх1, Вх1); 81Рцзннатг(х(); 8)Катете((аз.в, О.О. В.О, 1.О); В>Аетате(а5.О, О.О, 1.О, О,О>; 81Са111т'зт(ЧЕССОЙМАТ>; 81ц15о1тбТогцз(0.275, 0.85, 15, 15); 81РцзПМатг!х(); 81дотатет(98.8, 1.0, 0.0, 0.0); 81цС5о1т'бтогцз(8.275, 0.85, 15, 15); 81РорМатгтх(); 81Рорна(гтх(); /' Создание области трафарета в виде ромба '/ 81МаСг(кнабе(61 РКО)ЕСТ10М); 8\Соаб1бепттту(); (т (и <= и) В)цОгСПогв(-З.В.

З.В, -З.О (6С(>оат>П/(6СГ>оаС>и, З.В'(61(1оат)Н/(6С(1оат)н). е1зе 81цогСПо20(-З.О'(61(1оаС)н/(61(1оас)Ы З.В*(6С(>оаС) /(6(т>оат)Н, -З.В, З.О>; 81иатгт'хМобе(61 МООЕСЧ!ЕИ); 81Соаб)бепттту(); продолжение аз /' Каждый раз при изменении геометрии окна переопределяется ' система координат и перерисовывается область трафарета */ ннб гезнаре(тпС н, тпС Ы ( 81Ч(енрогС(О, В, (6(зтсет) и, (6Сзтзе1) Н); 400 Глава 10 ° Буфер кадров Листинг 10.1 (продолжение) В!С!еаг(6( 5ТЕНС1( ВОРРЕй 81Т); В!5!епс!!Рцпс(6( А(ИАЧ5, Ох1, Вх1); В!5!епс!!Ор(6( йЕР(АСЕ, 6( йЕРСАСЕ, 6( йЕР(АСЕ); В!Вех!п(6( ООАО5); 81Чегсех2((-1.0. 0,0); В!Чегтех2Г(9.9, 1.9); 8!Чегтех)г(1.0, 0.9); 81Чегтех2((0.9, -1.0), 81Епб(); В!Магг!хМобе(6( Рйо)ЕСТ!Ой); В!Соаб1бепС)СУ(); В!Црегзрест!че(45.0, (6(т!оа!) и/(6(г!оа!) П, 1.9, 2.0); В!Масг!хМобе(бь МООЕСЧ1ЕИ); В!Соаб!беп!згу(); В!Тгапз!аеег(9.9, 0.0, -5.0); ) /' Главный цикл ' Убедитесь, что биты шаблона запрашиваются */ !п! ша!п(тп! агас, слаг*' агяч) ( В!Ч(1п!1(аагйс, агйч): 81ц!1п!!Отзр1аунобе(6(ОТ 51М6(Е ! 6(ОТ й68 ! 6(ОТ ОЕРТМ ! 6(ОТ 5ТЕМС1(); 81ц(1пз!И!пбон5!ге(490, 499); 81ц(1п)!ИтпбоиРозз!зоп(109, 109); В!ц!СгеаСешзпбон(агйч(9)); !п!1(): 81цтйезьарерцпс(гезларе); В!цтО!зр!аурцпс(б!зр!ау); В!о!на!о(оор(); ге!цгп 9: Следующие примеры иллюстрируют другие варианты теста трафарета.

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

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

Сбросьте функцию трафарета так, чтобы рисование выполнялось только для ненулевых значений маски, и нарисуйте большой многоугольник цвета накладываемой поверхности на полный экран. Тесты и операции над фрагментами 401 ° Перекрытие (очег!арр(пй) полупрозрачных многоугольников — пусть вы имеете полупрозрачную поверхность, составленную из частично перекрываю- шихся многоугольников. Если вы просто используете альфа-смешивание, части нижележаших объектов, покрытые несколькими прозрачными поверхностями, будут выглядеть некорректно. Используйте плоскости трафарета, чтобы быть уверенными в том, что каждгяй фрагмент покрыт не более чем одной прозрачной поверхностью. Делайте это, сбрасывая плоскости в нулевые значения и выполняя рисование только для таких нулевых плоскостей, причем инкрементируя значения в плоскостях трафарета во время вывода.

° Штриховка (зс)ррИпя) — для вывода изображения с шаблоном штриховки. (См. раздел «Отображение точек, линий и многоугольников».) Вы можете сделать это, нарисовав шаблон в буфере трафарета, и тогда рисование будет выполнено согласно этому шаблону. Для того чтобы объект был изображен согласно шаблону, нужно, чтобы буфер трафарета с готовым шаблоном не изменялся во время рисования. Тест глубины Буфер глубины хранит для каждого пнксела экрана расстояние между точкой наблюдения и соответствую~цим местом объекта, ассоциированным с этим пиксехои.

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

В этом случае после воспроизведения всей сцены на ней сстаются только те объекты, которые не заслонены другими. Изначально буфер глубины инициируется значением, соответствуюшим максималыюму удалению эг наблюдателя, соответственно, глубина любого объекта заведомо меныпе этого саачения. Чтобы использовать буфер глубины, вам нужно просто разрешить его применение указанием константы 61 0ЕРТН ТЕ5Т в вызове я1Епа01еО и помнить, что очистку следует делать перед каждым кадром.

(См. раздел «Очистка буферов» этой главы). Вы можете также выбрать другую функцию сравнения для теста глубины с помощью команды а10ерспецпс О. чо»1 010ертикопс(О1еппгпГипс); Устанавливает функцию сравнения для теста глубины. Значение аргумента выбирается из списка: 61 ЕЕ55,61 ЕЕ00А1,61 Е00А~,61 6Е00АЕ,6Е 6КЕАТЕК и 6Е МОТЕ00АЕ. Все поступаюшие на тест фрагменты проходят его, если их гзначение удовлетворяет заданному соотношению со значением, уже помещенным в буфер глубины. По умолчанию используется функция 61 ЕЕ55, то есть входящий фрагмент признается, когда его г-координата меньше ранее занесенной в буфер. В этом случае г-значения представляют собой расстояние от объекта до точки наблюдения, и меньшие величины соответствуют ближе расположенным объектам.

402 Глава 10 ° Буфер кадров Смешивание, размытие и логические операции Поступивший на обработку фрагмент, успешно преодолевший все тесты, описанные в разделе «Тесты и операции над фрагментами», допускается к объединению с текущим содержимым буфера цвета одним из нескольких способов. Простейший, и он же по умолчанию, — это перезапись имеющихся значений, Альтернативно, если используется режим РСВА и вы хотите сгладить фрагмент или сделать его прозрачным, вы можете усреднить оба значения — новое и находящееся в буфере, то есть выполнить смешивание (Ыепг()пя).

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

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

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

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