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

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

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

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

° Используйте один и тот же объект разбиения для разных многоугольников, зто быстрее, чем выделение персонального объекта разбиения каждому многоугольнику. (Преимуп(ества последнего проявляются в многозадачной, многопроцессорной среде.) Если вы больше не нуждаетесь н объекте разбиения, вы можете удалить его и освободить занимаемую им память посредством команды В100е1еьеТе55 () . 430 Глава 11 ° Мозаичное представление н поверхности второго порядка Сообщения об ошибках 6Ш Библиотека СШ предоставляет вызов, возвращающий описательную строку для кода ошибки.

Эта подпрограмма не ограничивается тесселяцией, а также действует для ошибок, связанных с Ы() ЕВЯ и квадратичными поверхностями, подобно основной библиотеке С(.. (См. раздел «Обработка ошибок» главы 14.) Обратная совместимость Если вы используете версию 1.0 или 1.1 библиотеки С1П, не удивляйтесь, что тесселятор работает медленно. В этих версиях обрабатываются только простые невыпуклые многоугольники и такие же простые многоугольники с отверстиями. Также в них не принимаются во внимание пересекающиеся контуры (нет обратной связи для параметра сОМВТме). тесселятор версии 1.0/1.1 все еще работает в СШ 1.2 и 1.3, но его использование не рекомендуется.

Тесселятор 1.0/1.1 имеет много общего с его развитым потомком. Функции к1иненТеьв() и В1иое1ететеээо используются и там, и там. Главной процедурой для спецификации вершины осталась я1иТез эче гсех () . Механизм обратной связи управляется к1итеззСа11Ьаск(), хотя регистрировать можно только пять функций из нынешних двенадцати. Ниже представлены прототипы вызовов тесселятора версий 1.0/1.1: чоЫ к1ивек1пРо1уйоп(С1ЛЛпапйи!асогОЪ) 'геззоЬ)); чоЫ я1имехсСопсоиг(С1Л)сг!апяи!асогОЪ) 'геззоЬу, С1.епиш Гуре); чоЫ 61иЕпОРо(уаоп(С1ЛСг1апйи!а(огОЪ) 'ГезгоЬ)); Самый дальний от центра контур специфицируется первым, при этом не обязательно проводить инициализацию к1инех(Сопгоиг О. Для многоугольников без отверстий определяется только один контур, а я1и не хсСоп гои г (), соответственно, не используется. Если многоугольник состоит из множества контуров (то есть отверстий н дыр внутри отверстий), контуры описываются один за другим и каждому предшествует вызов к1инех(Соп сои г ().

Процедура к1иТеззчегсехо вызывается для каждой вершины контура. Для к1инехССопсоиг() аргумент Гуре может быть равным 610 ЕХТЕМ1ОМ, 610 1МТЕМ1ОМ, 6С0 ССИ, 6С0 СИ или 6С0 0МКМОИМ. Эти параметры несут только рекомендательный характер. Если вы зададите правильные значения, процесс разбиения ускорится. Неправильные значения будут проигнорированы, но разбиение будет продолжено. Для многоугольников с отверстиями один контур считается внешним, а другой — внутренним. Первый контур подразумевает тип 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!ооего (пилиндра) понятия «наружу» и «вовиутрь» очевидны.

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

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

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