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

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

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

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

Один отображается, в то время как второй подготавливается. Когда рисование кадра завершено, буферы меняются местами, то есть тот, который был виден, используется для рисования и наоборот. Это похоже на кинопроектор с двумя зацикленными кадрами: пока один проецируется на экран, художник стирает и перерисовывает невидимый кадр. Пока художник достаточно быстр, зритель не различит этот способ и способ, когда все кадры уже нарисованы, и проектор просто отображает кадры друг за другом.

С двойной буферизацией каждый кадр показывается, только когда рисование завершено, и зритель никогда не видит нарисованный частично кадр. Измененная версия программы, которая отображает «сглаженную» анимацию с помощью двойной буферизации, может выглядеть так: преп и! пбои ! и бооЫе Ьо((ег вобе (); (ог (! = а; ! < )ВВОООеоч !++) ( 40 Глава 1 е Введение в ОрепЯ. с)еаг (ье игпроио; с)гаи (саве(1); анар (Ье Ьа(теса О,' Обновление с задержкой В некоторых реализациях ОрепО1, кроме простой смены видимого и рисуемого буферов, команда виар впе ЬиЕЕегз() задерживает обновление экрана до окончания показа предыдущего буфера. Эта функция также позволяет показывать буфер с самого начала целиком.

Полагая, что частота обновления 60 раз/с, мы получаем, что максимальная частота смены кадров составляет 60 кадров/с (/рз), и, если все ваши кадры смогут быть очищены и нарисованы менее чем за 1/60 с, ваша анимация будет смотреться гладко. Чаше всего кадр оказывается слишком сложным, чтобы быть нарисованным за 1/60 с, и поэтому каждый кадр отображается больше одного раза. Если, например, на рисование кадра затрачивается 1/45 с, вы получите 30 Ерз, и графика задерживается на 1/30 — 1/45 = 1/90 с на каждый кадр, или на одну треть времени.

Кроме того, частота смены кадров — это константа, которая может принимать различные значения во время выполнения. Например, прн частоте обновления монитора 1/60 с значения частоты смены кадров могут быть 60 Ерз, 30 Ерз, 20 Ерз, 15 Ерз, 12 Ерз и т. д. (60/1, 60/2, 60/3, 60/4, 60/5, ...). Это значит, что, когда вы пишете программу и добавляете новые возможности (например, это авиасимулятор, и вы добавляете пейзаж местности), сначала каждая новая возможность, которую вы привносите, не влияет на производительность — вы все еще получаете 60 Ерз. Затем, внезапно частота падает до 30 Ерз, так как система уже не успевает рисовать все за 1/60 с, а это первое возможное очередное значение обмена буферов. Точно так же, если время рисования кадра становится больше 1/30 с, скорость анимации падает с 30 до 20 Ерз.

Если сложность сцены близка к одному из периодов Е1/60 с, 2/60 с, 3/60 с и т. д.), то из-за случайных изменений некоторые кадры следуют неско.лько быстрее, а некоторгяе немного медленнее. То есть частота смены кадров непостоянная, и зто может стать заметным визуально. Поэтому, если вы не можете упростить сцену с целью ускоренной подачи кадров, бывает лучше добавить небольшую задержку, чтобы замедлить и выровнять частоту смены кадров.

Если разброс большой, могут потребоваться более сложные методы. Движение = Перерисовка + Обмен Структура реальной программы, создаюацей анимацию, не слишком отличается от этого описания. Обычно легче перерисовать целиком буфер из рабочей области для каждого кадра, чем определить, какую часть нужно перерисовать. Это особенно верно для приложений наподобие трехмерных авнасимуляторов, когда небольшое изменение положения самолета изменяет расположение всего, находящегося за окном. Анимация 41 В большинстве анимаций объекты в сцене просто перерисованы с различными изменениями — перемещена точка обзора наблюдателя, или машина немного сдвинута на дороге, или об ьект слегка повернут. Если существенные перерасчеты требуются не для операций перерисовки, частота смены кадров падает. Однако нужно иметь в виду, что время после вызова функции анар 1Пе Ьиттег() часто используется для подобного рода вычислений.

В ОрепС) не включена команда анар 1Пе Ьиттег О, так как зта возможность может отсутствовать на аппаратном уровне, и во многих случаях она очень зависима от оконной системы. Например, при наличии прямого доступа к системе Х %'1пг)очч, вы можете использовать следующую команду СЕХ: чо~б е1Х5нарви(1ега(01зр1ау *ору, И(пбонз н1пбон).

(Подобные команды для других оконных систем описаны в приложении В). Если используется библиотека СЕНТ, команда вышгядит следующим образом: чо!б Х1и15анрви1(егз(чо)б), Листинг 1.3 демонстрирует использование 01игбнарбиттегаО при рисовании вращающегося квадрата, как показано на рнс. (.3. Это также пример применения СП)Т для управления устройством ввода и включения и выключения функций задержки.

Здесь кнопки мыши включают и выклгочают вращение. Кадр 0 Кадр 1О Кадр 20 Кадр ЗО Кадр 40 рнс. 1.3. Вращение квадрата с использованием двойной буферизации Листинг 1.3. Программа с использованием двойной буферизации: боиЬ(е.с ага(1с Сьг)оа( зр(п = 0.0; чо)б )п)1(чо1б) ( К1С1еагСо1ог(О.В, О.О, 0.0, 0.0); В15пабеМабе1(ЬС РСАТ); чо)б б1зр1ау(чо)б) ( В)С(еаг(ОС СО(ОЯ ВОРРВК В)т); 51Ризпна1г!х(); В(ватаге((зр)п, О.о. О.О, 1.0); Х)Со(ог)(О.О. 1.О, 1.0); 51аес11(-25.0, -25.0, 25.0, 25.0); 51РоРМагг1х(); 51и(5нарви11егз(); чо1б зр)пв!зр1ау(чо~б) [ ар~о = зр~п + 2.0; продолжение р 42 Глава 1 ч Введение в Орели 1.

Листинг 1.3 (лродолжвние) (зр1п > 3 68.8) з р1 и = з р1 и — 3 б О, О; 81иСРОЗСМЕбтвр1ау(); чотб гезоаре(1пт н, 1пС П) ( 8]итеирогС(8, О, (61з(се() н, (61з(се!) П); 81натг!хМобе(61 РМОЗЕСТ!ОМ); 811оаб]бент!ту(); 810гтпо(-58.8, 58.0, -58.0, 50.0, -1.8, 1.8); 81Масг!хнобе (6С МООЕСН1ЕИ); 81Соаб1бепт!Су(); ) чотб моизе(тпс ьиссоп, зпс зсасе, 1пс х, тпс у) ( зн(СсП (Ьиттоп) сазе 6СЬТ СЕЕТ ВОТТОМ: 1! (!тате == ОСОТ ООИМ) 81иС1б1еуипс(зрзпОтзр1ау); Ьгеай; сазе ОСОТ М10ОСЕ ВОТТОМ; 1! (зСаСе == 6001 ООИМ) 81ис1б1ееипс(ЙОЕЕ); ьгеай; бе!аи11: Ьгеах; ] /т Необходим режим двойной буферизации Регистрация функции обратной связи на ввод от мыши к / 1пс шатп(1пт агвс, спаг*" агйч) 81ис1п11(вагйс, агйч); а]ит]птСОтзр]аунобе(600т ОООВСЕ ] 6!От 86В); 81иС1п(СИ(пбон51се(258, 250); 81ис1п1си!пбонРозтс!оп(100, 180); 81иССгеаСеИ(пбон(агйч[8]); 1п1С(); 81иСО!зр1аугипс(бтзр1ау)1 81итйезпареЕипс(гезпаре); 81иСМоизерипс(моизе): 81иСМа1ПСоор(); ге!игл 0; Управление состоянием и рисование геометрических объемов Прочитав эту главу, вы сможете: ° Очистить окно и закрасить его произвольным цветом ° Принудительно ускорить завершение любого незаконченного рисования ° Рисовать с использованием любых графических примитивов— точек, линий и многоугольников в двух- или трехмерном пространстве ° Переключать состояния и запрашивать значения параметров состояния ° Управлять отображением графических примитивов— например, рисовать пунктирные линии или очерченные многоугольники ° Определять векторы нормалей в соответствующих точках поверхностей закрашенных объектов ° Хранить геометрические данные в массивах вершин для уменьшения числа вызовов функций ° Сохранять и восстанавливать несколько параметров состояния одновременно 44 Глава 2 ° Управление состоянием и рисование геометрических объектов Даже самые сложные и интересные изображения, нарисованные в ОрепСЕ, состоят из небольшого числа простых графических элементов.

Это не является неожиданностью — посмотрите, какие совершенные картины создал Леонардо да Винчи только с помощью карандашей и кисти. На самом высоком уровне абстракции существует только три основных операции рисования: очистка окна, рисование геометрических объектов и рисование растровых объектов. Растровые объекты: двухмерные изображения, битовые образы и символы шрифтов — рассматриваются в главе 8. В этой главе вы узнаете, как очистить экран и нарисовать геометрические объекты: точки, прямые линии и плоские многоугольники. Вы могли подумать: «Подождите минуту.

Я видел много компьютерной графики в фильмах и по телевизору, и всегда это были великолепно оттененные кривые линии и поверхности. Как такое получается, если ОрепС1 способен рисовать только прямые линии и плоские многоугольники?» На цветном рисунке 6 есть круглый стол, а объекты на столе состоят из кривых поверхностей. Все кривые линии и поверхности, которые вы видите, получены с помощью большого числа небольших плоских многоугольников и прямых линий, почти так же, как поверхность глобуса можно представить совокупностью огромного числа прямоугольных блоков.

Она не кажется гладкой тогда, когда блоки относительно велики в сравнении с глобусом, но с увеличением числа блоков ее качество улучшается. Позже в этой главе мы покажем, как образовывать кривые линии и поверхности из большого набора маленьких графических примитивов. Эта глава состоит из следующих основных разделов: ° Основы рисования. Показывает, как очистить окно и принудительно ускорить рисование. Также дает основную информацию об управлении цветами геометрических объектов и описание системы координат. ° Описание точек, линий и многоугольников. Рассматривает задание графических примитивов и методы их рисования.

° Управление основными состояниями. Показывает, как включать и выключать некоторые состояния (режимы) и опрашивать параметры состояний. «Отображение точек, линий и многоугольников. Рассматривает методы управления примитивами, например определение размера точки, типа линии, закраски многоугольника. ° Векторы нормали. Обсуждает методику задания векторов нормалей для геометрических объектов и кратко описывает, для чего нормали нужны. ° Массивы вершин. Показывает, как размещать большой набор геометрических данных всего лишь в нескольких массивах и как с помощью всего лишь нескольких вызовов функций формировать изображение описываемого объекта.

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

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

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

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