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

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

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

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

(Общие вершины не поддерживаются всеми реализациями ОрепС1.) ПРИМЕЧАНИЕ Массивы вершин стали стандартом в Орепбь версии 1.1. В версии 1М добавлена поддержка хранении в них координат тумана и вторичных цветов. При обработке массивов вершин геометрических объектов выделяются три шага: 1. Объявляем восемь массивов, каждый из которых хранит данные различных типов: координаты вершин, нормали к поверхности, РСВА-цвета, вторичные цвета, индексные цвета, координаты тумана, координаты текстур или флаги краев многоугольников. 2.

Помещаем данные в массив или массивы. Доступ к массивам осуществляется по адресу в памяти. В клиент-серверной модели эти данные сохраняются в адресном пространстве памяти клиента. 3. Рисуем геометрию на основе данных. ОрепСЕ получает данные из всех активированных массивов с помощью различных указателей. В клиент-серверной модели данные перемещаются в адресное пространство сервера. Есть три пути для этого, выбор зависит от типа решаемой задачи: Массивы вершин 75 о индивидуальный доступ к элементам массива по индексу (неупорядоченные перемещения); о создание списка отдельных элементов массива (упорядоченные перемещения); о обработка последовательных элементов массива.

В версии 1.4 добавлена поддержка множественного доступа к массиву с помощью одной команды. Смешанные массивы вершин — другой обший метод организации дюшых. Вместо нескольких различных массивов, каждый из которых хранит данные своего типа (цвет, нормали, координаты и т.

д.), можно помеШать данные различных типов в один массив. (См. раздел «Смешанные массивы».) Шаг 1: активация массивов Сначала необходимо вызвать функцию а1Е пав)еС1! епс5 тасе О со значением, указывающим, какие массивы активируются. Теоретически, потребуется до восьми вызовов этой функции для активации всех восьми массивов.

Практически обычно активируется до шести массивов. Например, маловероятно, что потребуется одновременно активировать 6С СОСОР АРРАУ и 6С 1МОЕХ АРРАУ, так как программа может работать только в РСВА-режиме или режиме цветовых индексов, но никак не в обоих одновременно. чо!г( а1ЕпаосеС1! епс5сасе(01епшп аггау); Определяет массив для активации.

Аргументом может служить константа из списка со следуюшими символическими именами: 6С НЕРТЕХ АРРАС, 6С СОСОР АРРАУ, 6С 5ЕСОМОАРУ СОСОР АРРАС, 6С 1МОЕХ АРРАУ, 6С МОРМАС АРРАС, 61 ГО6 СООР01МАТЕ АРРАС, 61 ТЕХТОРЕ СООРО АРРАУ и 6С Е06Е ЕСА6 АРРАУ. При использовании освешения может потребоваться определение векторов нормали для каждой вершины (см. раздел «Векторы нормали»,) В этом случае нужно активировать оба массива — массив нормалей к поверхности и массив координат вершин: а1епаьсес1! епс5сасе (6с моамАС АРРАч); к1епаьсес1~епс5сасе(6С неРтех АРРАС); Допустим, необходимо нарисовать геометрический объект только одним цветом, для чего следует выключить освешение.

Выключение делается функцией а10!заЬ1е() (см. главу 5). Теперь, когда освещения нет, также надо приостановить изменение значений векторов нормалей, которые не влияют на рисование. Для этого используется функция: к1эсзаьсес1!епсзсаСе(6С МОРМАС АРРАС); ! чо!с! Р10сзаь1ес1сепс5сасе(с)епнш апау); Определяет массив для отключения из того же списка констант, что и для функции к1ЕпаЬ)еС1! епС5Сате О. 76 Глава 2 ° Управление состоянием и рисование геометрических объектов Вы можете спросить; почему разработчики Ореп01.

ввели новые (и длинные) имена функций, вроде и1'с1!епг5(аге(), почему не использовать функции к1Епав(еп и к101зав)еп? Одной из причин явилось то, что функции к1Епав1е() и В10!заб)е() могут сохраняться в списках отображения, а спецификация массивов вершин этого не допускает, так как данные остаются на стороне клиента. Если активно мультитекстурирование, включение и отключение клиентских массивов затрагивает только текущую текстуру. (См, раздел «Мультитекстурнрование» главы 9 для получения более подробной информации.) Шаг 2: помещение данных в массивы Здесь в наших руках две возможности: прямой путь, когда одна команда заполняет одиночный массив на стороне клиента, таких команд восемь по числу массивов; команда, заполняющая несколько клиентских массивов за один раз из единственного смешанного массива.

чоЫ к1че г гехРо! п1ег(С!ш( яге, О!еппш гуре, С!яге! япл!е, сопя! 01 чоЫ "ро!лгег); Определяет пространственные координаты. Указатель ро!лгег — адрес памяти первой координаты первой вершины в массиве. Параметр Гуре определяет тип данных (61 5НОКТ, 61 1МТ, 6( ЕСОАТ или 6С 000ВЕЕ) для каждой координаты массива. Аргумент яге — число координат вершины, может принимать значения 2, 3 или 4. Аргумент згг(с(е — смещение в байтах между соседними вершинами. Если зто значение равно О, вершины считаются плотно упакованными. Функции для доступа к остальным семи массивам аналогичны: чоЫ к\Со1огРо! псе г(01!пгяге, 01епшп гуре, 01яге1 зле, сопзг С1чоЫ ротгег); чоЫ а15есопоагуСо1огРо!псег(01!пг яге, 01епшп Гуре, С1яге! згг1г(е, сопзг 01.чоЫ "ро(лгег) чоЫ 611псехРо!пгег(01епшп й?ре, С1яге! хгг(«(е, сопзг С1чоЫ "ро!пгег); чоЫ к1ногва1Ро1пгег(01еппш гуре, С!з!ге! зггЫе, сопя С1.чоЫ "ротгег); чоЫ к1РокСоогг(Ро1'п1ег(01епшп п(ре, С1яге( зггк(е„сопзг 01.чоЫ "ро(л(ег) чоЫ к1техСоогоРо! пгег(01!пс яге, 01епшп «уре, 01яге1 з(гЫе, сопзс 01чоЫ »ротгегХ чоЫ к1ЕОкеР(экРо1пСег(0!яге! зле, сопзг СЬчоЫ "ро!лгег); Основное различие между функциями — должны ли определяться размер и тип.

Например, нормали к поверхности всегда имеют три компонента, то есть задание типа является лишним. Флаг краев — всегда типа Ьоо!еап, и нет необходимости в задании типа данных. Таблица 2 4 содержит список допустимых значений для размера и типов данных. Для реализаций ОрспС1, поддерживающих мультитекстурирование, массив координат текстур определяется с помощью функции к1ТехСоогПРо(псег() толь- Массивы вершин 77 ко для активной в данный момент текстуры. (См. раздел «Мультитекстурирова- ние» главы 9 для получения более подробной информации.) Таблица 2.4. Массивы вершин. Допустимые значения размеров н типов данных Команда Размер Значения аргумента Суре (тмп данных) ц(уепехРо( п(ег дКо(огРо1пгег 6С 5НОКТ, 6С 1МТ, 6С ЕСОАТ, 6С ООО ВСЕ 6С ВУТЕ,6С ОМ516ИЕО ВЧТЕ,61.

5НОКТ,ВС 0|Ч516ИЕО 5НОКТ, 6С 1ИТ,ОС Ой516ИЕО!ИТ,ОС ГСОАТ,ОС 000ВФЕ бс Вч(6ОФ ОМ5!бме0 Вчте,бс 5нОкт,бс ОМ516иеО 5нОкт, 6С 1ИТ, 6С ОМ516МЕО 1МТ, 6С ЕСОАТ,ОС ОООВСЕ бс ОИ516иеО Вчтсбс 5нцкт,бс 1мт,бс е(ОАт,бс ОООВФе 61 ВЧТЕ, 6С 5НОКТ, 6С 1МТ,61. ГСОАТ, 6С ОООВСЕ бС ГСОАТ,ОС ОООВСЕ 6С 5НОКТ, 6С 1ИТ, 6С ЕСОАТ, 6С 00 ОВСЕ Тяп аргумента не задается (тяп данных должен быть 6(Ьоо(еап) 2, 3, 4 3,4 дбесопг)агусо(огре(п(ег 3 дбпс(ехРо(п(ег дщогпза(ро1п(ег д(Годбоогг)Ро(п(ег д(Техсоогг)Ро(п(ег д(Ег)деГЬздРо)п(ег 3 1 1, 2, 3, 4 1 Лмстииг 2.9.

Активация и загрузка массивов вершин: чакау.с »СаС)с бС1пс тегС!сев() = (25, 25, 190, 325, 175, 25, 175, 325, 250, 25, 325, 325): зтдС(с 6С11оаС со1огз() = (1.0, 0.2, 0.2. 0.2, 0.2, 1.0, О.З, 1.0, 0.2, 0.75, 0.75, 0.75, 0.35. 0.35. 0.35, 0.5. 0.5, 0.5): д1ЕпзшеС11епС5СаСе(6С СОСОК АККАЧ); ц1ЕпзшеС11епС5Сате (6С ЧЕЙТЕХ АККАУ); ц1Со1огро!птег(3, 6С ГСОАТ, О, со1огз); В1чегсехро(псег(2, бс 1нт, В, чегс(сез); Шаг по индексу параметр згпг)е функции ВТ*Розпсег () указывает с)репсь метод доступа к дан- ным, передаваемым указателем на массив. Его значением должно быть количест- во байтов между началом двух элементов или О, являющийся частным случаем. Например, данные о вершинах (цвет КСВ и координаты (х, у, г)) хранятся в еди- ном массиве вида В листинге 2.9 используются массивы вершин для КСВА-цветов и координат вершин.

Вещественные значения КСВ и соответствующие им целочисленные ко- ординаты (х, у) загружаются в массивы бс сОФОк АккАТ и бс чектех АккАЧ. 78 Глава 2 ° Управление состоянием и рисование геометрических объектов ага!!с 6(г!оас 1пгеггн1пев[] (1,0. 0.2, 1.В, 100.0, 1ОВ.В.0.0, 1,0, 0.2. 0.2, О.В, 20В.В, О.В, 1.0, 1.О, 0.2, 100.0, ЗОВ.В, О.В, о.г, !.о, о.г, гво.о, звв.в, в.в, о.г, !.о, !.о, зво.в, гов.о, в.в, в.г, в.г, !.в, гов.о, !оо.в, о.о): Значения цвета в этом массиве извлекаются ат начала массива (которое можно представить в виде ыпгегтв(пей[О]), с шагом, равным 6 х ззвеаг(61т1аа!) бай- тов, чего хватает на описание цвета и значений координат вершин.

Этот шаг ну- жен для перемешения к данным следующей вершины: 61со!огРо(птег(З, 66 Р(ОАТ, б"51тео[(61(!оат>, Гнптегткипеп[В]>; Для получения координат вершин нужно начать не с начала массива, а с четвер- того элемента (в С отсчет начинается с нуля); В!Чеггехпо]пгег(З, 61 Р(ОАТ, 6 з(а«о[(6СГ!оат>, а1птег!н1ПЕВ[З]>; Если ваши данные хранятся подобна массиву [пгелплпе4 обратитесь к разделу «Смешанные массивыь, где представлена подробная информация о хранении по- добного рода данных, Если шаг равен нулю, данные каждого типа (Ков-цвет, индексный цвет, коорди- наты и т. д.) должны быть плотно упакованы. Данные в массиве обязаны быль од- нородными, то есть должны присутствовать все данные о КСВ-цвете, все данные о координатах вершин или какие-то другие данные подобного рода.

Шаг 3: разыменование и рисование Пока содержимое массива вершин разыменовано, массив остается на стороне клиента и его легко изменить. В шаге 3 содержимое массива отправляется серверу, а затем проходит вниз по конвейеру отрисовки. Как уже говорилось, вы можете получить данные из одиночных элементов массива (по индексу), из упорядоченного списка элементов массива (котарый мажет быть ограничен подмножеством данных массива вершин) или из последовательности элементов массива. Раэыменование элемента массива чоЫ 61АггауЕ1евепт(С1]п! [Гп); Извлекает данные только одной вершины (]Й) для всех задействованных массивов вершин.

Для массива координат вершин соответствующей командой будет к1Че г тех [зые] [Гуре]ч(), где яге принимает значения [2, 3, 4], а Гуре — [з, Е 1, г1] для типов 61знагг, 61]пт, 61(!оа! и 6СОоио]е соответственно. Размер и тип определяются функцией к1чеггехР01п!ег(). Для остальных активных массивов к1Аг гауе! евеп! () вызывает я1еовее1ав(), к1техсоого [э[хе][агре]чО, В1601аг[яге][(Иге]чн, 615есопоагусо1огЗ[фре]чн, 611пвех[(рре]ч(), я!Магна!3 [гуре]ч() и 61еоксоого[гуре]ч().

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

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

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

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