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

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

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

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

Первый контур подразумевает тип 6(0 ЕХТЕМ1ОМ. Ориентация (по часовой стрелке нли против) выбирается произвольно в трех измерениях; однако для любой плоскости возможны две различные ориентации, поэтому типы 6С0 ССИ и 6С0 СИ должны использоваться непротиворечиво. Используйте 6С0 0МКМОИМ, если не знаете что делать. Строго рекомендуется преобразовывать код С1() 1.0/1.1 к новому интерфейсу тесселяции С1Л 1.2 в следующем порядке: Поверхности второго порядка: сферы, цилиндры и диски 431 1.

Измените тип ссылки на главную структуру данных с СЪЮсг(ап801агогОЪ) на ИЛ)сеззе!асог. В СЪ() 1.2, СШсг(ап801асогОЪ) и С1.Псеззе1асог являются одним и тем же типом. 2. Разделите вызов В1ивеВ1пРо1укоп () на две команды: В10Тез зВек1пРо1увоп () и н1итеззВек! пбопсоиг(). Все контуры, включая первый, должны быть явно начаты. 3.

Распределите обязанности В1ииехССоптоиг() между В1отензЕпабоптоиг() и н1итеззвек! пбопсоигО. Вы должны закончить предыдущий контур перед началом описания следующего. 4. Преобразуйте В1иЕпоРо1убопО в В1иТеззЕпсбопсоог() и к1итеьзЕпаРо1укоп (). Конечный контур должен быть замкнутым. 5. Переопределите применение параметров в В\оТеззба11оасх(). В С(.П 1.2 6с0 ВЕ61И, 6С0 НЕкТЕХ, 6С0 ЕЙО, 6С0 Еккок и 6(0 ЕО6Е РСЯ6 считаются синонимами 6(0 ТЕ55 ВЕ61И, 600 ТЕ55 НЕПТЕХ, 6С0 ТЕ55 ЕНО, 600 ТЕ55 ЕВРОП и 610 ТЕ55 ЕВОЕ РСА6.

Поверхности второго порядка: сферы, ЦИЛИНДРЫ И ДИСКИ Основная библиотека ОрепСЪ предоставляет поддержку для моделирования н отображения простых точек, линий и выпуклых закрашенных многоугольников. Ни ЗЕ)-объектьь ни наиболее часто используемые 2Г)-объекты, такие как окружности, непосредственно недоступны. На протяжении всей книги трехмерные объекты создавались с помощью библиотеки С1.()Т.

Библиотека СШ также предоставляет средства для моделирования н мозаичного разбиения, аппроксимации многоугольниками разнообразных 21)- н 31)-фигур (сфер, цилиндров, дисков и неполных дисков), которые могут быть ебсчитаны уравнениями второго порядка. К таким средствам относятся процедуры для рисования поверхностей второго порядка (квадратичных) с различными стилями и ориентацией. Квадратичные поверхности удовлетворяют следующему общему уравнению: ах' + а2Ус + азг' + а4хУ + а»Ух + ахи + а,х -> а»У + а»з + ам - О.

(См. Ргосег)ига! Е!етепсе )ог Сотригег Стаи!сх Дзвида Роджерса (Е)анЫ Нойегз), Нью-йорк, издательство МсСгач -Н111, 1985.) Создание и отображение поверхностей второго порядка напоминает тесселяцию. Порядок использования квадратичных объектов следующий: 1. Чтобы создать квадратичный объект, используйте команду я1океийиас г1с (). 2. Задайте атрибуты воспроизведения объекта (если вас не устраивают значения по умолчанию): о используйте В10Опао г1сог 1' ел с а с)оп () для управления направлением «намотки» и для разграничения внутренней и внешней областей; 432 Глава 11 ° Мозаичное представление н поверхности второго порядка о используйте Р1ийиаиг(срган5(у1е() для выбора между воспроизведением объекта в ниде точек, линий или закрашенных многоугольников; о для освесценных квадратичных объектов используйте я1иОиас) г1сйогва1з О для указания одной нормали на вершину или одной нормали на грань.

По умолчанию нормали не генерируются; о для текстурных квадратичных объектов используйте к1иОиас) г1стехси ге(), если хотите генерировать координаты текстуры. 3. Подготовьтесь к потенциальным проблемам — зарегистрируйте обработчик ошибок с помощью я1ийиаи г! сСа11Ьасй () . Тогда при возникновении ошибки в процессе воспроизведения будет вызвана указанная вами процедура. 4. Затем вызовите процедуру для воспроизведения, соответствующую типу квадратичного объекта: я1и5рпеге О, к1иСу11пиег(), к1иРт ах О или к1иРаг(1а1- О( зй(). Чтобы увеличить производительность для статичных данных, инкапсулируйте квалратичный объект в список отображения.

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

СШс)иас(г)сОЬ)* Р1ийенОиас) гас(чоЫ); Создает новый квадратичный объект и возвращает указатель на него. При неудаче возвращается нулевой указатель. чоЫ к1ире1е(еОиас(г1с(СП~с)иас(г(сОЪ) *с)оЬ)); Разрушает квадратичный объект (с)о(у) и освобождает занимаемую им память. чоЫ к)иОиас)г1сСа11Ьасй(С11)с)иас)г(сОЬ) 'с)оЬ), С1епшп тй(сл, чоЫ (*/и)О); Определяет функцисо обратной связи (1и), вызываемую при особых обстоятельствах.

Константа 61О Е РРОР— зто единственное возможное значение для аргумента со)с(с)с, позтому (п вызывается в момент возникновения ошибки. Если значение /п равно йв11, из обработки исключается существующая функция обратной связи. Для 61и ЕРРОР функция )и вызывается с одним аргументом — кодом ошибки. Для преобразования кода ошибки в АБСП-строку можно использовать команду к1иЕггог5(г1пао. Поверхности второго порядка: сферы, цилиндры и диски 433 Управление атрибутами квадратичных объектов Следующие процедуры имеют отношение к данным, генерируемым процедурами квадратичных объектов. Используйте их до того, как будете задавать примитивы.

Листинг 11.4, программа диас г ! с . с, демонстрирует изменения стиля рисования и вида генерируемых нормалей, а также создание квадратичных объектов, обработку ошибок и рисование примитивов. тоЫ 61цйцасг!согаи5(у1е(СШг)наг)г!сОЬ)»доЬу, С(епшп йагалсу1е); Управляет стилем (йаю5гу1е) воспроизведения квадратичного объекта (доЬ|). Допустимые значения стиля: 6(0 Р01МТ, 6Е0 (1МЕ, 610 51сНООЕТТЕ и 6(0 Е1(с.

Константы 6(0 Р01МТ и 6(0 (1МЕ указывают, что примитивы должны быть отображены как точка в каждой вершине или как линия, соединяющая пару вершин. Константа 6с0 51сНООЕТТЕ указывает, что примитивы отображаются как линии, вв исключением ребер, разделяющих соседние грани, которые не отображаются.

Данный вариант часто используется командами 61е0! зК() и 61иРа гт! а10! в К () . Константа 6Е0 Р11( указывает, что отображение выполняется закрашенными многоугольниками, которые рисуются против часовой стрелки с учетом своих нормалей. Это может быть эффективно для 61ойиабг!сОг1ептэсвоп(). той 61цОц ап г ! с Ог ! ептат! оп(СШ«)пас(г(со(0 "аоЬ) С)епшп опепгас(оп) Для квадратичного объекта (уоЬ)) аргументу опепгаг(оп может быть присвоено значение 6(0 00Т510Е (наружу — по умолчанию) илн 6(0 1М51РЕ (внутрь); эти константы управляют направлением нормали.

Для 61и5рпегео (сферы) и 61ису1!ооего (пилиндра) понятия «наружу» и «вовиутрь» очевидны. Для 61оО! вк() и 61иРагт! а10! в к() (диска) сторона с положительным значением г является наружной. тоЫ 61иОи ао г ! ей о гюа1з(СШццаг)г(сОЬ)»доЬ~) С1 епшп поппа(л); Для квадратичного объекта ()оЬ) аргумент «нормали» (пег»па)л) — 600 йОМЕ (по умолчанию), 610 Р(АТ или 6(0 5НООТН. Функция 61иОоао г ! сйогюа1з () используется для указания того, где генерируются векторы нормалей. Константа 6(0 МОНЕ означает, что нормали не генерируются, и нацелена на использование без освещения. Константа 6 с 0 Р ЕАТ соответствует одной нормали на поверхность — это часто предпочтительно для имитации освещения с «плоским» затенением.

При задании 6(0 5НООТН генерируется одна нормаль на каждую вершину квадратичного объекта; такой вариант подходит для освещения с плавным затенением. чоЫ 61цйоапг!стех(иге(С(.()г)наг)г!со)) 'доЬ), С) Ьоо!сап ГехтагеСооп6); Для квадратичного объекта доЬ1 аргумент ГехсигеСоопй задается равным 6с ЕА(5Е (по умолчанию) или 6( ТРОЕ. В последнем случае для квадратичного объекта генерируются координаты текстуры. Манера, в которой это делается, зависит от типа квадратичного объекта. 434 Глава 11 ° Мозаичное представление н поверхности второго порядка Квадратичные примитивы Следующие подпрограммы непосредственно генерируют вершины и другие данные, составляющие квадратичный объект. Во всех случаях аргумент с7оЬ)' ссыла.

ется на квадратичный объект, созданный вызовом к1оиенйово г1с () . чок) к1о5рлеге(СШс)пабг1сОЪ) *с)оЬу, 01с1опЫе гайик, 01.(пт йсет, СЫпт ьтасЬг); Рисует сферу с заданным радиусом (гайиг), с центром в начале координат (О, О, 0). Вокруг оси г сфера разбивается на элементы гйсез (подобные географической долготе), а вдоль оси г — откладывается количество згасЬз (аналог географической широты). Если координаты текстуры генерируются средствами квадратичного объекта, г-координата принадлежит диапазону от 0.0 при г - — гайиз до 1.0 при г = гойи, и г наращивается линейно вдоль продольных линий.

При этом значение я лежит в диапазоне от 0.0 для оси +у, до 0.25 — для оси +х, до 0.5 — для оси -у, до 0.75 †д оси -х и назад до 1.0 — для оси +у. чек) я1оСу11 пает(01Л)с)пж)псОЪ) 'аоЬ) СЫоцЫе ЬаиЯайиз, СЫопЫе горЯайиг, 01х)опЫе Ье(йЬг, Свйпс сйсед 0?гпг згасЬз); Рисует цилиндр, ориентированный вдоль оси г, с основанием г = 0 и верхней гранью в г = Ье1яЬг. Подобно сфере, цилиндр разбивается на гйсез вокруг оси г и вдоль этой оси откладывается количество згасЬз. Аргумент ЬазеЯайиг — это радиус цилиндра в основании (г - 0). Аргумент горЯайиз — радиус цилиндра в его верхней точке (г - Ье1яЬг).

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

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

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

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