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

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

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

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

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С РЙОМТ.

6( 5Н1М1МЕ55, шаС аь!и!пеаа); 61ЕпаЬ]е(61 С[6НТ1М6); 81Епаосе(61 С[6НТВ); 81Епао]е(6С ОЕРТН ТЕ5Т); 61Епаосе(6С АВТО МОРИА(); 81Епаи]е(6С МОННА(17Е); 3п!С аиг1асе(); СьемигЬ = 81именмигьаМепбегег(); 91имигЬаРгорег(у(гпемигЬ, 6(0 5АИРС1М6 ТОСЕКАМСЕ, 25.0); 8[ииигааргорег(у(СЬеиигЬ, 610 015РСАЧ МООЕ, 600 Р]СС); 61имигьаса11ьасм(спемигь, 610 ЕКМОН, пигьаЕггог); чо!б б3501эу(чо!б) ( 6111оаС Кпога[8) = (0.0, 0.0, 9.0, 9,0, 1.0, 1.9, 1,0, 1,0]; !пс 1, 81С1еаг(61 СО(Ой 80РРЕИ 81Т [ 61 ОЕРТН ВВЕРЕН 81Т); 81Риаьма(г!х(); 8[Но(а(е1(339.9, 1., О,, О.); 815са1е1(9.5, 0.5, 9.5); 81ивеВ[п5иг1асе(СЬемигь); 81имигьа5иг1асе(сьемигь, В, кпоса, 8, кпоса, 4 ' 3, 3, йс(1ро!п(а[0)[0][8], 4, 4, 61 ИАР2 ЧЕКТЕХ 3); Интерфейс Р]ОйВБ библиотеки 6С(] 455 81нЕпб5нггасе(СЛеннгЬ); 11 (5поиР01пС5) ( В!Ро1п(51се(5.8): В!015аЬ]е(6с с]6НТ1М6); 81Со1ог31(1.0, 1.0, 0.0); В!Ве81п(6с Р01МТ5)', 1 (1 = 9; 1 < 4: 1++) ( Рог () = О: ] < 4' ]«) ( 81Чег(ех]1(с(1ро1пС5[1][]][0), сС1ро1пС5[1][]][1] сС1Ро1 п(5 [1] (] ] [ 2] ); 8!Епб(): 91ЕпаЫе(6С С16НТ]М6); ) 8]РориаСг(х(); 81 51н5Ь (); ] чо!б геапаре((пС н, 1пС Ь) 8!Ч1еирогС(8, 8, (6С55се1) н, (6С5!се1) Ь); 8!Наег]хлебе(ОС РЯОЗЕСТ10М); 9!Соаб]беп(1Су(); 91нРег5РесС1че(45.8, (6СбонЫе)и!(6СбонЫе)П, 3.0, 8.8); В\На(г1хиобе(6С НООЕСЧ1ЕИ); 8!Сааб]бент((у(): 81Тгап5]аее1(О.О, 0.9, -5.0); ) чо]б ХеуЬоагб(нп558пеб слаг Хеу, (пС х, 1пС у) ( 5К1Ссл (КеУ) ( саае 'с'; саае 'С'; 5понро1пс5 = 15понРо!'пС5; В!нСРо5(кеб(5р!ау(); Ьгеаи: саае 27: ех51(8); Ьгеак; бе1ан1С: Ьгеак; 1пс еа1п(1пС агВс, слаг*' агВч) ( В!нС]п1С(аагВс, агВч); В!нС]п11015р!ауиобе(6(ОТ 5 ]МОСЕ [ ОСОТ Н68 ] 6(ОТ ОЕРТН); 81нС]п1СИ!пбои51хе(589, 509); 81нС1п!СИ(пбоиРо5111оп(100, 100); продолженне Р 456 Глава 12 ° Вычислители и НОРВ5 Листинг 12.$ (продолжение) В) и(С геагеам пипи(агв» [0) ): 1п)С (); В)и(аеаьареЕипс(ге»Паре); В)иго!ар)аурипс(и)ар)ау); Х)и(кеуЬоагирипс(хеуЬоаги); В(исяа1псоор(); ге(игл 8; ) Управление ХОРВАТ-объектом Как видно из листинга 12 5, команда к1именмигьайепиегег() возвращает новый Х()ВВЯ-объект, с типом указателя на структуру 6с0пигЬзОЬ).

Вы должны создать этот объект перед использованием любой другой процедуры Х()ВВБ. Когда Х()ВВЯ-объект станет вам не нужен, удалите его командой а1иОе(еСейигваРепсегег О для освобождения занимаемой им памяти. О(.()пигЬзОЬ)* к1ийенйигвзйепоегег(уоЫ); Создает Х()КВБ-объект, ло!(), и возвращает указатель на него нли нуль в случае, если ОрепС(. оказывается не в силах выделить память объекту.

| уоЫ В1иОе1етейигвзяепсегег(ОЫ1пигЬзОЬ) 'лоЬ!); Удаляет Х1ЖВЯ-объект по)1'. Управление свойствами 0(()КВБ-объекта Управление тем, как будет строиться и отображаться Х()КВЯ-объект, производится через набор свойств, связанных с Х()КВБ-объектом. Эти свойства отвечают за способ растеризации поверхности (например, закрашивание или каркас), за отображение или возврат вершин мозаичного разбиения, за детализацию этого разбиения. УоЫ к1ийигЬар горе гсу(О)()пигЬзОЬ) «лоб!', ОЬепи1п ргореггу, ОЬ йоаг иа!ие); Управляет атрибутами Х()ВВЯ-объекта, по!у. Аргумент ргореггу указывает одно из следующих свойств: 6(0 015РсАУ НООЕ, 6(0 МОРВ5 НООЕ,6с0 Сисс1М6, 6С0 5АНРс106 НЕТНОО, 6с0 5АНР(106 ТОСЕРАМСЕ, 6С0 РАРАНЕТР1С ТОСЕРАМСЕ, 6(0 0 5ТЕР, 6(0 Н 5ТЕР или 6(0 АНТО СВАО НАТР1Х.

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

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

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

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