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

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

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

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

В эту программу также добавлены освещение и затенение, а результат их действия продемонстрирован на рис. 12.3, Листинг 12.3. Освещенные и затененные поверхности Безье с использованием сетки: ЬехщезЬ.с чо)О )и(!1(ВПтя(ча(О) ( 6СТ(оа! амь!еп!() = (8.2, 0.2, 0,2, 1,0); 6(Т1оа! Роя(т)оп() = (0.0, 8.0, 2.0, 1.0); 6(!1оа! ма! О(!гике(] = (О.б, 8.6, 0.6, 1.8): Вычислители 449 6[Г]оат иат зресо[аг[) = [1.8, 1.8, 1,8, 1.8]; 6[(1оат иат 5П]п]пе55 [] = (58. 0] (" 81Епап]е(6[ С16НТ196); 81Епап]е(бс (16НТВ); 81[]ВП(тч(бс [16НТВ, 6[ АНВ]ЕНТ, аио(опт); 91[(ВП(тч(бс [16НТВ, 6[ Р051Т10Н, роззт~оп); В]натег]а[тч(6[ ГНОНт, бс 0]ГГ05Е, иат О((тозе); В]натег!а1(ч(б[ ГКОНТ, бс 5РЕСОСАВ, иат зресо1аг); 81насег]а1(ч(6[ ГКОНТ, бс 5Н1М1НЕ55, иат зи]п]пезз); ) чо)О О(зр1ау(чо!8) ( 9161еаг(6[ СОСОК ВОГГЕН В]Т ] 6[ ОЕРТН ВОГГЕК 81Т); 91Розинатг(х(); В]Носата((85.8, 1.0, 1.0, 1.0); В[Еча(нези2(6[ Г[С[, О, 20, 9, 20); 81РарМатг3х(); 91Г1изи(); ) чсно (и] С(чо(О) [ 81С1еагСо1ог(0.0, 0,8, 9.8, 0.0); 91ЕпаВ[е(6[ ОЕРТН ТЕ5Т); 91нар2( (61 МАР2 НЕКТЕХ 3, 8, 1, 3, 4, 8, 1, 12, 4, йстг1ра] пса[0] [0] [9] ); В\Епап]е(6[ НАР2 ЧЕНТЕХ 3); 81Епап[е(6[ АОТО НОМНАС); 81нарбгг82((29, 9,9, 1.0, 20, 0.0, 1.0); зп( 11(ВП(5(): ] рис.

22.3. Освещенная и тонированная поверхности Безье, построенные по сетке 450 Глава 12 ° Вычислители и П([)КВ5 Применение вычислителей для текстур Программа из листинга 12А включает в себя два вычислителя, работаюшие одновременно: первый генерирует трехмерные точки поверхности Безье аналогично листингу 12.3, а второй вырабатывает координаты текстуры.

Здесь координаты текстуры те же, что и и- и о-координаты поверхности, но это требует создания специального плоского лоскута. Плоский фрагмент определяется на квадратной области с углами (О, 0), (О, 1), (1, 0) и (1, 1); значения (О, 0) генерируются в углу (О, 0), (О, 1) — в углу (О, 1) и т. д. Поскольку его порядок равен 2 (<линейная» степень плюс 1), при вычислении текстуры в точке (и, р) генерируются коорлинаты (э, Г). Зто делается одновременно с вычислением вершин, поэтому их можно наблюдать в процессе рисования поверхности (см. цветной рисунок 19), Если вы хотите размножить текстуру по три раза в каждом направлении, измените значение 1.0 в массиве техртэ [] 1) [) на З.О.

В этом примере поверхность строится из девяти копий карты текстуры. Листинг 12.4. Применение вычислителей для текстур: [ех(цгеэог(.с 6сг)оат с1г1ро(пгэ[4) [4) [3) = ( (( -1,5, -1.5, 4.9), ( -9,5, -1.5, 2.9), (8.5. -1.5. -1.0), (1.5, -1.5, 2.9)), (( -1.5, -0.5, 1.0), ( -0.5, -0.5, З.О), (0.5, -9.5, 0.0), (1,5, -0.5. -1.9)), (( -1.5, 0.5. 4.0), ( -0,5. 0.5, 0.0), (0.5, 0.5, 3.8), (1.5, 0.5, 4.0)), (( -1.5.

1,5, -2.0), ( -0,5. 1.5, -2.9), (0.5, 1.5, 0.8), (1.5, 1,5, -1.9)) ); 6111оаг гехр14(2) (2) [2) = (((0.0, 0.0). (8.9, 1.0]), ((1.0, О.О), (1.0, 1.0))); чо!б б!эр1ау(чо!б) ( В\С1еаг(6С СОСОВ ВОРЕЕЯ В!Т [ 6С ОЕРТН ВВЕРЕН В!Т); В\Со1огЗГ(1.9, 1.8, 1.0); В[Ечэ[неэпг(6С Е)СС, 9, 20, 8, 28); 81Р1оэп(); ) Фее!!пе )вэаен!б1П 64 Эбег!пе !вааеНе!ВП! 64 61ооуте !ваае[3"!вэаен)б1П'!вааене!ВПГ); чо!б вахе1ваае(чо!б) ( !Пг Г)оэт 11, 11; гог (! = 8: ! < !вааеИ!бгп; !»+) ( 1! = 2. 9*3, 14159265*! /! вааен! бтп; Гог () = 0; ) < !вааеме!ВП(; 1+<-) ( !1 = 2.9»3.14159265»1/!вааене(ВП1; Вычислители 451 !ва8е(З'(!ва8еНе[КПС*(ч))1 (6гиьуге) 127*(1.0+а)п(г!)); (ва8е(З'(!ва8еНе(КПС"г+1)+1] (6СЧЬуге) 127'(1,60асоа<2 С))); )ва8е[3"(]ва8еНе(КЫ'!+])+21 (6гоьуге) 127'<1.0+гоп(!<+С])); чо!б )п(г(чо(б) ( 81Мар2Г(6С МАР2 ЧЕКТЕХ 3, О, 1, 3, 4, О, 1, 12, 4, йсгг!ро~ пса [0] [01(01); 8!Мар)!<ОС МЯР2 тЕХТОЙЕ СООЙО 2, О, 1, 2, 2, О, 1, 4, 2, Агехрга[81(О][О]); 81Епаые(6С МАР2 ТЕХТОЙЕ СООК0 2); 8!ЕпаЫе(6С МАР2 ЧЕКТЕХ 3); 8!Нарос]02!(20, 0.0, 1.0, 20, 0.0, 1.0); ваХе!ва8е().

8!ТехЕпчг(6! ТЕХТОКЕ ЕНЧ, 6С ТЕХТОКЕ ЕМЧ МООЕ. 6С ОЕСАЫ; 8!ТехРагавегег((6С ТЕХТОЙЕ 20, ог ТЕХТОЙЕ ИКАР 5, 6С КЕРЕАТ); 8!ТехРагавегег<(6С ТЕХТОКЕ 20, 6! ТЕХТОКЕ ИКАР Т, 6С ЙЕРЕАТ); 8!ТехРагавегег~(6С ТЕХТОКЕ 20, 6! ТЕХТОКЕ МА6 Р!!ТЕК, 6С МЕАКЕ5Т); 81ТехРагавегег)(6С ТЕХТОЙЕ 20, 6! ТЕХТОЙЕ М1М Р1[ТЕЙ, 6С МЕАКЕ5Т); 8!тех[ва8е20<6С тЕХтОЙЕ 20, 8, 3. (ва8еи!бгь, (ва8еие(8ьг, 8, 6С Й68, 6С ОЙ516МЕО ОЧТЕ, (ва8е); 8!Епаые(ог ТЕХТОКЕ 20); 8!Епаые<6! ЬЕРтН ТЕЗТ); 815ьабеиобе1(6С РСАТ); ) го!б ге!Паре(]пг и, !пг П) ( 81Чгеирогг(0. 8, (6га<ге!) и, (6га(ге!) П); 81нагг(хМобе(6С РЙО)ЕСТ10М); 8!гоаб!бепг)гу<); (! (и ч= П) 810ггьо(-4.0, 4.0, -4.8'(6[г!оаг)пг(6(г!оаг)и, 4.0*(6[!!оаг)Ь)(6с(1оаг)и, -4.9, 4.9); е\ае 8!Оггьо(-4.8'(6СГ!оаг)и/(6[г!оаг)П.

4.0*(6гг!оаг)и)(6сг!оаг)П, -4.0, 4.0, -4.0, 4.0),' 8!Магггхнобе(ог МООЕ[Ч1ЕИ); 81(оаб1бепС(гу()') 8!Когагег(85.8, 1.0, 1.0, 1.0); !пг ва<п((пг агКс, снйаг" аг8ч) ( 8!ЧС1п<г(тчаг8с, аг8ч); 8!Чг[п!Со]ар!аунобе(осот 5[Н6СЕ ( 6!ОТ Й68 ( 6!ОТ ОЕРТН); 8!чг1п)ги(пбои5(ге(508. 580): 81ЧС1п!ги)пбоиРоа!С(оп(108, 100); 81ЧССгеагеи(обои(аг8ч(81); продолхгение ах 452 Глава 12 ° Вычислители и МВМВВ Листинг 12.4 (продолжение) )п11(); в1и(01вр1аурипс(и1«р1ау); х1итаев Паре гипс (ге«Паре) 1 а1игиа!п(оор(): гегигп 6: Интерфейс ХОРВАТ библиотеки 6~0 Несмотря на то что вычислители — зто единственные доступные для непосредственного рисования кривых и поверхностей примитивы ОрепС1., это не недоста.

ток, так как они очень эффективно реализованы на аппаратном уровне, а приложения чаще всего обращаются к ним с помощью библиотек более высокого уровня, Одна из них, СШ, предоставляет интерфейс ХБКВБ, являющийся надстройкой над командами вычислителей ОрепС1.. Пример простого КОРВО-обьекта Если вам не нужно расшифровывать, что такое Х()ВВЯ, написать для вас код Орепо)., манипулирующий Х()ВВЯ-кривыми и поверхностями, не составит труда, даже с учетом освещения и наложения текстур. Во время рисования Х()КВБ-кривых или неусеченных (ипгг1шшег() Х()ВВБ-поверхностей (сл1.

раздел «Усечение Х()КВЗ-поверхностейэ) следуйте описанному ниже порядку действий. 1. Если вы намереваетесь осветить Х()ВВЯ-поверхность, вызовите к1ЕпаЬ)е() с параметром 61 АВТО МОРИА( для автоматического генерирования нормалей к поверхности. (Или вычисляйте их самостоятельно.) 2. Когда создаете Х(ЗЕВА-кривую илн поверхность, используйте команду я1иМеииигивкепиегег() для создания указателя на ХБВВБ-объект. 3. При необходимости вызовите к1имигивргореггу О для задания параметров построения, таких как максимальный размер линий многоугольников, которыми воспроизводится ваш Х(ЖВЯ-объект.

Для команды В1ииигввргореггуо можно также включить режим, в котором геометрические данные тесселяцив могут быть получены с помощью интерфейса обратной связи. 4. Вызовите я1имигивСа11Ьасх(), если хотите быть уведомлены о случаях возникновения ошибок. (Проверка ошибок способна отрицательно повлиять на производительность, но она настоятельно рекомендуется.) Команда а1иМиговСа11Ьаск() может также использоваться для регистрации функций, возвращающих геометрические данные тесселяции. 5. Начните построение кривой или поверхности с вызова я1иВек! пСигче() иля В1иВеВ(п5иг(асео.

6. Сгенерируйте и воспроизведите свою кривую или поверхность. Хотя бы рю вызовите к1илигЬвСигчео или В1ииигЬв5иг(асе() с контрольными точками Интерфейс Ь[()кВ5 библиотеки ВШ <е53 (рациональными или нерациональными), последовательностью узлов (йпо(в) и порядком базисного полинома для своего Л!(]ВВ5-объекта. Вы можете делать зти вызовы как дополнительные для задания нормалей к поверхности игили координат текстур.

7. Вызовите к]ОЕООСпгче() или к]иЕпо5ог1асе(), чтобы закончить обработку кривой или поверхности. В программе из листинга! 2.5 строится ]»П)ВВ5-поверхность в форме симметричной возвышенности, контрольные точки которой принадлежат диапазону от — 3.0 ло 3.0. В качестве базовой функции взят кубический В-сплайн, но последовательность узлов неоднородна, со значением кратности, равным 4, в конечных точках. Соответственно, базовая функция ведет себя как кривая Безье в каждом направлении.

Поверхность освещена, ей приданы темпо-серое диффузное (<[1((цзе) отражение и белые зеркальные блики. На рис. ! 2 4 результирующая поверхность показана также в виде освещенного каркаса. Рис. 12.4. Мцав5-поверхность Листинг 12.5. [<]ОРВ5-поверхносты вцг[асе.с И1пее1 САССВАСК аее1(пе САССВАСК аепе!1 6(1[па( сг[ро!пса[41[41[31: !М 5понРО!пев = 0; 6шпогЬвОЬ] <ЕПеиого; »О!О !и!с ьогтасе(чо!О) ( !п! и.

ч; 1ог (о = 0; и < 4; о»<-) ( 1ог (ч = 0; ч < 4; ч+а) ( с(]ро!пса[о][ч][Е] = 2.0'((СС1(оат)о - !.5); ст]розпгв[о][ч][1] = 2.0'((0(1[пас)ч - 1.5); ! 1 ( (и -"= 1 ][ о == 2) аа (» == 1 [[ ч == 2)) ст]ро! псе (о] [ч] [21 = 3 . О; продолжение *Р 454 Глава 12 ° Вычислители и В][]КВВ Листинг 12.5 (продолжение) е1ае с(1ро[п(5[и][ч)[2) = -3.0; чо[б САССВАСК пигьаЕггог(6(епиш еггогСобе) ( сола( 6(иЬу(е 'еа(г!пВ; еасг!пВ = 81иеггог5сг!пВ(еггогсобе); грг!п(1(а(бегг, "Ошибка МОМВ5: Масп", еагг!пВ); ех!с(9); чо!б зпзС(чо[б) ( 6111оас шас б!11иае[) = ( 9,?, 0.7, 8.7, 1.8 ]; 6111аас шаС ареси1аг[) = ( 1.0, 1.0, 1.0, 1.0 611[пас шас ап!о[песа[] = ( 100.0 ]; 81С!еагсо1ог(9.9, 9.8, 8.9, 8.8); 81ма(ег! а11Ч(6( РМОМТ, 61 011105Е, шаС б(11иае); 81ма(ег!а11Ч(6С РМОМТ, 6( 5РЕСОСАР, шаС ареси1аг); 81маСег!а11Ч(6С РЙОМТ.

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

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

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