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

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

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

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

' Текущий инлскс хранится как значение вещественного типа. Целые значения преобразуются к вещественным напрямую. Значения за пределами диапазона инаексов пветов не полнергаются ограничиванию. Однако перед размытием (ссли жлючепо) и записью в видеобуфер индекс преобразуется в вещественный форматес фиксированной точкой.

Все биты в целой части результирующего значения <фиксированной точкой, которые не соответствуют битам в видеобуфере, игнорируются. 3Вдание модели закрашивания Линия или залитый многоугольник могут быть нарисованы одним цветом (за;:ивха) или множеством различных цветов (градиентная заливка, также называемая а)крагииеаггием ио Гуро), Нужный метод определяется функцией к15ладемоде1 О.

В15ладеноде! (ОЕепшп тоде); Устанавливает модель закрашивания. Аргумент тодге может иметь значение 6( 5МООТН (по умолчанию) илц ОС Р(АТ. При сплошной закраске цвет одной определенной вершины независимого привнтива дублируется в направлении всех вершин примитива. При градиентной зав<вке цвет каждой вершины рассматривается разпельно. Если зто линия, цвета внтерполируются между цветами вершин отрезка. Для многоугольника цвета в<у)ренней области вычисляются путем интерполяции цветов вершин.

Програмвз из листинга 4.1 рисует треугольник с градиентной заливкой, показанный на ввстном рисунке 11. Листинг 4.1. Рисование треугольника с градиентной заливкой: згпоо(().с м!В 1п<1<то1О) ( В)С<еагео<ог<В.О, О.О, О.О, Е.В); В15ьадеиоде1<6С 5МООТИ); м<6 <г1апв1е<то<д) ( лродолхгение Ф 188 Глава 4 ° Цвет Листинг 4.1 '(продолжение) 918ех1п(6( Та!АИОСЕ5); 91Со1ог31(1.0, 0.9, 0.0); 91ЧегСех21(5.0, 5.0); 91Со1ог31(0.0, 1.8, 8.8); 91Чеггех21(25,0, 5.9); 91Со1ог31(9.9, 0.9, 1.0): 91Чегтех21(5.9, 25.9); 91Епб<); ) чо!б б!зр1ау(чо1б) 91С1еаг(61 СОСОВ ВОРРЕВ 81Т); Сг1ап91е(); 91Е1озв (); ) чо!б ге!варе(<пт и, 1пС Ь) ( В\Ч!еирогС(0, О, (6(х!хе!) и, (6(5!се!) П); 91на(г!хнобе(61 РВО)ЕСТ10И); 91(оаб1бепС<Су(); <и = и) 91оОгСПо20(0.0.

39,0, 0.9, 30.9*(6111оаС) Ы (6(11оаС) и); е15е 91оОг(Пего<9.9, 30,9"(6СЕ!оаС) и/(6<11оаС) П, 0.0, 39.0); 91Магг1хиобе<61 МООЕСЧХЕИ); 1пС ва1п(зпС агхс, сьаг** эгхч) ( 91оС1п11(аагхс, агхч): 91иС!п!Св!зр1ауМобе(6СОТ 51ИОСЕ ! 6<ОТ ВОВ); 91и11пзСИ!пбои5!се(509, 500); 91оС1п!СИ<пбоиРоз<С<оп(188, 100); 91ЧССгеатенспбои(агхч<О)); <п!С(); 91иСО(зр1аугапс(б)зр1ау): 91огаезьареропс(геьнаре)! 91осМачпгоор(); гегигп 8; При градиентной заливке цвета ближайших пикселов ненамного различаются, В режиме КСВА смежные пикселы с немного различающимися цветамн выглядят одинаково, то есть смена цвета вдоль многоугольника происходит постепенно, А вот в режиме индексации цвета соседние пикселы могут ссылаться на различные значения в таблице цветов, составленной из произвольных цветов. Поскольку соседние элементы таблицы могут содержать совершенно различные цвета, то и градиентно залитый многоугольник в режиме индексации цвета может выглядеть необычайно психоделично.

Решить проблему поможет палитра с индексами, определяющими плавно измешзющиеся по линейному закону цвета. Помните, что загрузка цветов в таблицу Настов — работа для оконной системы, а не для ОрепС1.. Правда, в С?Л)Т сушестаует такая функция Н1итбетСо1ог () для загрузки в таблицу цветов одиночного индекса. Первый ее аргумент — это индекс, остальные задают красную, зеленую а сннюкз составляющие.

Поэтому, чтобы загрузить целых 32 смежных индекса Настов (от 16 до 47) желтой гаммы, выполните цикл: Зат (1 = О; З < 32; Зчч) ( НШтаетСотог(те+а, З.О СзГ32.О), З.О*(зт32.О), Е.О>; ! Тогда, когда потребуется градиентная заливка примитивов, нарисованных только даетами с индексами от 16 до 47, зти многоугольники будут плавно залиты желтыи цветом. ??ри сплошной закраске цвет какой-то одной вершины задает цвет заливки примитива.

Для отрезка это цвет конечной (второй) вершины. Для лпзогоугольника используется цвет определенной по некоторым правилам вершины. Номер вершины можно узнать из табл. 4.2. Отсчет всех номеров вершин и многоугольников аней начинается с 1, ОрепС?. следует этим правилам, но лучший способ избежать неизвестности в вопросе цвета заливки многоугольника — это установить одинаковый цвет для всех вершин примитива. таблица 4.2.

Выбор цвета заливки длл з-го многоугольника Вершина, цвет которой мспользуется для заливки 1иа многоугольника з'+ 2 з'+ 2 Зз 2г+ 2 Немаисниый многоугольник ?реугольник полосы (с общей гранью) 1раугальник веера (с общей вершиной) Независимый треугольник Савзакный четырехугольник (через грань) Независимый четырехугольник Задание цветовой и полутоновой моделей 159 Освещение После прочтения втой главы вы сможете: ° Понимать, как Орепб~ приближает сцену к условиям реального освещения ° Рисовать освещенные объекты путем задания материала, источников света и свойств модели освещения ° Задавать свойства материала освещаемого объекта ° Манипулировать стеком матриц для управления положением источников света Освещение 1б1 йзх вы видели в главе 4, ОрепС1. вычисляет цвет пикселов в конечной отобраавемой на экран сцене, удерживаемой в буфере кадров.

Часть этих вычислений гаввсит от того, какое освешение используется и как объекты в сцене отражают влв поглощают свет. В качестве примера можно привести океан, цвет которого вркий в солнечный день и серый в облачный. Наличие солнечного света или об' взков определяет, выглядит океан ярко-бирюзовым или грязно-серо-зеленым. Фактически большинство объектов не похожи на трехмерные до тех пор, пока ввв ве освсшены. На рис. 5.1 показаны две версии одинаковой сцены (одиночной егоры): одна из них с освещением, другая — без. Рис В.Х.

Освещенная н неосвещенная сферы 'ьак видно из рисунка, неосвешснная сфера выглядит как плоский диск. Это поввывает, насколько критично взаимодействие между объектами и светом при авдавии трехмерной сцены. 3 ОревСЕ можно управлять освсшением и обьектами в сцене с помощью множе. пы эффектов. Эта глава начинается с примера удаления невидимых поверхностей. Затеи в ней объясняется, как управлять освещением в сцене, рассматривается ковель освешения ОрепС1. и детально описывается, как установить множество мраметров освегпения для получения нужного аффекта. В конце главы приведеим математические вычисления, показывающие, как освеШение влияет на цвет.

Зта глава состоит из следуюших основных разделов: ' ° Удаление невидимых поверхностей. Описывает основы удаления невидимых поверхностей из сцены. ° Реальный мир и освещение в ОрепСЕ. Раскрывает в общих чертах, как рабо- тает освепгение в реальном мире и как ОрепС) реализует эту модель. ° Пример: рисование освеШенной сферы. Знакомит с возможностями освешеввя в ОрепС). путем демонстрации небольшой программы, рисующей освещенную сферу. в Создание источников света.

Описывает элементы модели освещения и управ- ление ими. ° Выбор модели освещения. Рассказывает, как определить и расположить ис- точники света. е Задание свойств материала. Показывает, как описать свойства объектов, что- бы они взаимодействовали со светом так, как зто нужно. 162 Глава 5 и Освещение ° Математика освещения. Представляет математические вычисления, проводимые ОрепС1. для определения воздействия освещения на сцену. ° Освещение в режиме индексации цвета. Рассматривает различия между режимами РСВА и индексации цвета в условиях освещения.

Вычисления освещенности обычно происходят до текстурирования. В версии 1.2 появился режим освещения (ОЕ 5ЕРАКАТЕ 5РЕСОЕАК ЕОЕОй), в котором вычисление отраженного цвета отделено от излучательности, рассеянного и фонового света и где оно выполняется после текстурирования. Данный режим, как правило, увеличивает яркость освещения, делая ее менее зависимой от цвета текстурного рисунка. Удаление невидимых поверхностей Дойдя до конца этого раадела, вы начнете рисовать закрашенные трехмерные объекты. Работая с ними, очень важно уметь отделять объекты, находящиеся ближе к положению наблюдения, от тех, которые закрыты другими, более близкими объектами.

Изменение точки обзора может привести к изменению взаимного перекрытия объектов. Например, если посмотреть на сцену с противоположной стороны, все объекты, ранее находившиеся перед другими, оказываются за ними. Для получения реалистичной сцены эти взаимные перекрытия должны быть выявлены. Допустим, код выглядит следующим образом: иь((е (И ( Вес ч(еи(ЬВ ро(о! ггое еоозе роз(г!оп(); В)С(еаг(ВГ СОЕОа ВЬРРЕа В)Т); Егаи ЗО оЬ)есс А(): огаи зо оь1есг в(); ) При некоторых положениях мыши объект А может закрывать объект В. При других — наоборот, объект В может заслонять объект А.

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

Исключение из сцены частей залитых объектов, которые заслонены другими, называется удалением невидимых поверхностей. (Удаление невидимых линий, та есть то же самое применительно к каркасным объектам, немного сложнее и не обсуждается в этой главе. См, раздел «Удаление невидимых линий» главы 14.) Наиболее легкий путь удаления невидимых поверхностей — использование буфера глубины (иногда называемого г-буфером) (см.

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

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

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

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