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

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

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

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

6С ОМЕ Н!М05 5ЙС АСРНА)! 91Н(пС(6С щМЕ 5НООТН Н]МТ, 6С ООМТ САНЕ); 91С(пен!ОСН(1.5); 91С!еагСо1ог(0.9, 0.0, 9.0, 9,0); Л Рисуем две диагональные линии в виде буквы Х '/ чоы О(яр!ау(чо!О) ( В]С(еаг(6С СОСОЙ ВОРРЕЙ В]Т); 91Со1ог3((9.9. 1.9, 9.9); В]Рцзлнатг(х О; а!Йотатет(-готдпзсе, О.О, О.О, О.ц; 91Вех(п(6с с1МЕ5); В(ЧегСехгт(-9.5, О.5); В!Честен)((9.5. -9.5); 9!Ело(); 91Рорнэтг(х О; продолжение р 22б Глава б ч Смешивание, сглаживание, туман и отклонение Листинг б.4 (продолженое) 91СЬ1огЗТ(9.9, 0.0, 1.9); 91Роьлна(г!х(); 91ко(а(ет(гоСАпб1е, 0.0, 0.9, 0.1); 919ев!п(6С С 1ИЕ5); 91ЧегСех2((9.5, 0.5); 91Чегеех2((-9.5, -0.5); 91Епе(); а1Рорнаег!х(); 91Е1цал(); ) чо(с[ геьларе(!пС и, !пС Ь) ( 91Н!еиРогС(9, О, (61!пС) и, (6!.!пС) Ь); 91Маег!хноае(6С РЙОЗЕСТ10И); 91(оао10епС!Су(); !г (и <= и) 91осггло20(-1.9, ).О, -).О (61!1 С)п/(61([оаС)и, 1.9'(6С(1оаС)П/(61(1оаС)и); е1ье 91иогСПЬ20(-1.9"(6С(1оаС)и/(6С(1оаС)Ь, 1.9*(61(1оаС)и/(61(1оаС)П, -1.9, 1.0)', 9]наес!хноее(6С ИООЕСН!ЕН); 91(оао1вепС!Су(): чо!Е Кеувоаго'(опа!Впее слег Кеу, !пС х, 7пС у) ( аи!Ссп (Хеу) ( саве 'г': саве 'й': гоСАп91е е= 29.; !! (гоСАпб1е >= 369.) гоСАп91е 9]оСРовеяеп!ар]ау(); Ьгеах; саве 27: /' Клавиша Еас */ ех!С(0); Ьгеак; вагап\с: Ьгеак; !пс ша!и(!пс агбс, сваг" агах) ( 91иС1п!С(йагбс.

агвч); 91о(1п!Со!ар1аунове(6СОТ 51МОСЕ [ 6[ ОТ К6В); 91оС1п!СН!поои5! хе(200, 200); 91оССгеаеей!пеон(агвч[ 9 ] ): 7п(с(); 91ЧСйеаларегипс(геьларе); Сглаживание 217 И1иСКеуЬоагбрипс(иеуЬоагб); И1иСО(зр1аурипс(бсзр1ау); И1итнасл(оор(): геСигп 0; ) Сглаживание в режиме индексации цвета Для устранения ступенчатости в режиме индексации цвета необходимо загрузить и использовать карту цветов. Так как последние 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 — возвращает значение больше единицы, мультивыборка поддержана.

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

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

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