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

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

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

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

Так как последние 4 бита в индексе цвета определяют степень покрытия, необходимо инициировать 16 соседних индексов цветами, изменяющимися по линейному закову от цвета фона до цвета обьекта. (Изменеиие должно начаться с индекса, кратного 16.) Затем производится очистка цветового буфера первым из этих 16 цветов гребенки, и рису!отея точки или линии с использованием данного набора индексов. В листинге 6.5 представлена програмиа, демонстрирующая создание цветовых гребенок для рисования сглаженных диний в режиме индексации цвета. В этом примере создаются два набора: один дли зеленого цвета и другой для синих теней. Листинг 6.5. Сглаживание в режиме индексации цвета: аа(лбех.с Збес(пе РАИР512Е 26 Меыне РАНР15тдат 12 сбег!пе РАИР25ТАРТ 48 иас1с 11оас госАпи1е = О.; /' Инициализируем сглаживание для режима индексации цвета, " включая загрузку зеленой гребенки, начиная с индекса ' РАИР15ТАРТ, и синей гребенки, начиная с индекса РАИР25ТАРТ.

' Количество цветов в наборе должно быть кратно 16 т/ чоьб 1п11(уо!б) ( (пС 1 сог (1 = И; 1 < РАИР512Е; 1++) ( 6С11оаС спаде; спаде = (6111оаС) 1/(6111оаС) РАНР512Е; и1ис5ессо1ог(РАНР15тАРт+(6(1пс)1, 9., злабе, О.); И1и15есСо1аг(РАИР2 5ТАРТ+(6С1пС)1. О., О., владе); И1Епаьсе(61 С1МЕ 5НООТН), И1Н(пС(6С С!МЕ 5ИООТН Н1МТ, 6С ООМТ САРЕ); И)С(пеисбСЬ( 1.5); Исссеаггпбех((бсссоаг) РАИР15ТАРТ); /' Рисуем две диагональные линии в виде буквы Х */ то(б б(зр1ау(уо1б) ( И161еаг(61 СОСОР ВОРРЕР В1Т); И11пбех! (РАИР15ТАРТ); продолжение *Р г1В Глава б ° Смешивание, сглаживание, туман и отклонение Листинг 6.5 (продолжение) 91РовЬМа(г(х(); 91йо(ате((-гоСАп91е, 0.9, 0.9, 9. 1); 91вев!п<6с с1ИЕ5); 91Чег(ех2((-9.5. 0.5); 91чегеех2Г(9.5, -9.5); 91Епб(); 91РорИатг7х(); 911пбЕХ((МАИР25ТАВТ); 91РовЬМаСГ! х (); 9)Во(аеес<гоСАпвсе, 9.9, О.О, 9.1): 919ев!п(6с с1ИЕ5); 91чегтех2Г(9.5, 9.5); 91Чег(ех21<-9.5, -9.5); 91Епб(); 91РорМатг!х(); 919105Ь(); ) чо!б гевпаре(!пС и, !пС Ь) 91Ч(еирогС(9, 9, (6Св!Хе!) и, (615!Хе!) Ь); 91МаСГ(хиобе(6С РМО)ЕЕТ10М); 91Соаб1бепС!Су(); (т (и <= Ь) 91оОгСПо20<- 1.0, 1.0, -1.9'(6СГ)оаС)Ь/(6С(1оаС)и, 1.9*<ВСГ)оаС)п/<6СГ)оаС)и); е1ве 91оОгсьо20(-1.9*(6с(1оас)и/(6с(1оас)ь, 1.9*(6сг1оас)и/(6сг1оас)ь, -1.0, 1.0); 91Ма(г!хИобе(6С МООЕСН1ЕИ); 91Соаб1бепС!Су(); Хеупоагб(опв(впеб спаг Хеу, !пС х, !пС у) чо!б ви!Ссп (Кеу) ( саве 'г'; саве 'й': гоСАГ91е += 20.; !! (Го(пп91е >= 360.) гоСАп91е = О.; 91ЬСРоьгйеб!вР1аУ(); Ьгеак; саве 27: /" Клавиша Еьс '/ ех!С(9); Ьгеах; бесаи11: Ьгеак,' ) !пс ша!п((пС агвс, спаг"* агвч) 91и(1п!С(йагвс, агвч); Сглаживание 219 Н[и(1п]101нр[ауносе(6СОТ 51НС(Е [ 6(НТ 1Н0ЕХ); Н]и(1п1(нп пиои51 ае(200, 200); Н[и(Сгеасеннпиои(агви [О] ), 1п1 С (); Н[и(аевьареЕипс(ге»наре); Н[игкеуооагогипс(кеуьоагн); Н(и(01»р[аугипс(О1»р)ау),' Н[и(на(п(оооо; гесигп Э; Тм( как цвет меняется от цвега фона к цвету объекта, сглаженные линии выглядят правильно лишь тогда, когда они рисуются на фоне.

При рисовании синей линии она затирает часть зеленой линни в точке пересечения. Для того чтобы исправить аго упущение, нужно перерисовать область пересечения линий с помощью зелено-синей гребенки (от цвета линии в видеобуфере до цвета рисуемой линии). Однико это влечет дополнительные расчеты и обычно нс имеет смысла, поскольку область пересечения невелика по размеру. Заметьте, что в режиме ВГ>ВА проблены, в общем-то, и нет, так как цвета рисуемых объектов смешиваются с цветами, хранящимися в видеобуфере.

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

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

Попробуйте сделать это вак в режиме Г«ОВА, так и в режиме индексации цвета. Также посмотрите иа реаультат изменения толщины линий и размеров точек. Сглаживание геометрических примитивов с помощью мультивыборки Усреднение по множественной выборке, или, короче, множественная выборка, нлн, еще короче, мультивыборка (щп[с[зашр![пя) — технология, привлекающая лонолпительную информацию о цвете, глубине и трафарете при сглаживании примитивов Орепо].: точек, линий, многоугольников, битовых образов и изображений. При усреднении по множественной выборке в определении цвета, глуби- 220 глава б» Смешивание, сглаживание, туман и отклонение ны и координат текстур фрагмента участвуют цвета, глубины и координаты текстур других фрагментов и никселов, согласно размеру выборки.

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

Мультивыборку очень просто добавить в приложение. Это делается в три шага: 1. Инициализация окна для поддержания множественной выборки. Это делается командой СьПТ: В1ЬС1пттвтзР1аУНоее(600Т 000ВСЕ ( 600Т Р6В ( 6(0Т НВСТ15АИРСЕ): 2. После открытия окна необходимо убедиться, доступна ли мультивыборка.

То, что с помощью библиотеки САИТ можно создать окно «на любой вкус», еше не доказательспзо доступности мультивыборки в данной реализации. Если запрос параметра состояния 60 5АНРСЕ ВВГГЕР5 возвращает значение 1, а 66 5АМРСЕ5 — возвращает значение больше единицы, мультивыборка поддержана. (Запрос со значением 6С 5АНРСЕ5 возвращает количество элементов выборки. Если оно равно единице, мультивыборка невозможна.) 611пт ьотз, заир\ез; В16е11птеаегч(6( 5АНРСЕ ВВГГЕР5, аьотз); В16ет)псевегч(60 5АИРСЕ5, Ввавр(ез); 3.

Для активизации мультивыборки используется команда: 01Епао)е(6С НВСТ15АРСЕ): Программа из листинга 6.6 рисует два набора примитивов, демонстрируя эффект от применения мультивыборки. Процедура тлтс() проверяет, доступен ли режим множественной выборки, а затем создает два списка отображения: один в виде «солнечного колеса» из линий различной толщины и треугольников (за- ! крашенных многоугольников), и второй с «шахматным» фоном. В процедуре отэр!ау() выводится «солнечное колесо» в двух видах: с мультивыборкой (слева) и без нее (справа). Таким образом, можно сравнить ступенчатость двух объектов. Контрастный фон иногда акцентирует зубчатость, а иногда скрадывает ее.

С помощью клавиши Ь можно перерисовать изображение — с «шахматным» фоном или без него. Листинг 6.6. Применение мультивыборки: гло(1(эаглр.с зтаттс (п1 ЬВСЬВВ1е = 1; /» * Выводим параметры состояния, связанные с мупьтивыборкой. ' Создаем список отобраиения с "колесом" из линий и треугольников. Сглаживание 221 то!а !п!с(чо(О) ( 6(!пС Ьчг, зЬчс; !пс т, 1; 61С1еагСосог(0.8, 8.0, 8.0, 8.8): 616еС1пСебегч(6с 5АМРСЕ ВОЕЕЕК5 АКВ, ВЬч!): ргтпсг("Количество буберов выборок равно ХО(п", Ьч!)! 616ес1псевегч(6с 5Амрсе5 АВВ, азьч!); рг!пСГ("Количество элементов выборки равно ХО(п", зЬч!); В!Мень!зС(1, 66 СОМЕ)СЕ); сог (! = 0; ! < 19; !++) ( 61РозлнаСгтх(); В)Котята!(368.О"(!сов!)!7 13.8, О.О.

О.О, 1.0); ВссосогЗ! (1.0, 1.0, 1.0); 61(тлен!ОСЬ((т%3)<1.9): 618еВ!п(6с с1МЕ5): 61Чегтех2г(9.25, 9.95); В(чегеехгг(В.В, 8.2); 61Епо(); 61Со1огзг(9.0, 1.8, 1.0); 61Веб!п(6с ТК1АМОСЕ5); 61Чегтех2г(0.25, 0.0); 61Чегтех2г(0.3, 0.9): 61Негтех27(8.975, О. 19); 61Епо(); 61Рорнатгтх(); 61ЕпОС!зС(); 61нен(тзС(2, 6С СОМР1СЕ); 61Со)огзг(1.9, 8.5, 0.0); 61ВеВтп(6с ООА05); тог (! = 8; т < 16; !++) ( гог () = 0; ) < 16; )++) !Г (((т + )) М 2) == 8) ( 61ЧЕГСЕХ2((-2,8 + (! * 0,25), -2.8 + (1 * 8.25)); 61Негтех2Г(-2.9 + (! ° 0.25), -1.75 + () ' 9.25)); В(Чегтех2((-1.75 + (! ' 0.25), -1.75 + () * 0.25)); В(Чегтех27(-1.75 + (т * 0.25), -2.0 + () * 0.25)); ) 61Епб(); 61ЕпбСтзС(); ) /' Рисуем два набора примитивов для сравнения результатов ' при использовании мультивыборки и в ее отсутствие.

' Зтот код включает сглаживание и рисует один список отображения, ° затем отключает сглаживание и рисует второй список отображения ° / та(в Отзр1ау(чо(О) продолжение *р 222 Глава б ° Смешивание, сглаживание, туман и отклонение Листинг 6Я (про<>ряженое) ( В(С(еаг<аЕ СОЕОМ ВВРРЕВ В)т>; (! (ЬВ1оав1е) В1Св11Е(вс(2); В1Епао>е(ВЕ ИЬЕТ15АМРЕЕ АМВ); В1РивПМа!г!х О; В>тгапв(асе(<-1.В, В,О, О,О>; В1Са11(! 51(1); В\РорМасг(х(); В>В(вао(е(ВЕ М 61ривПМэсг! х () В1тгап»1аге((1 в<сапе!вт(1); 61Рорнасг!х О; В1и(5иарви((ег оет15АНРее АМВ); .В, 0,0. О.В); »О ) ио!б КеуЬоагб(ипв!Впеб слаг Кеу, (пс х, чпс у) ( ви((сл (Кеу) ( саве 'Ь': саве 'В': Ьвсоха В(и(Ро Ьгеах; саве 27: / ех!С(в Ьгеах; бе(аи11; Ьгеаа; 1е = (ЬВ(овв1«: всаеб!вр1ау О; ' Клавиша Евс '/ ): Альфа-компонент и покрытие мультивыборки По умолчанию мультивыборка вычисляет степень покрытия тех фрагментов, которые не зависят от значения альфа-компонента.

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

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

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

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