OpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д (1124475), страница 7
Текст из файла (страница 7)
Результаты накапливаются, а затем записыва|отся в память текстур или отправляются на этап растеризации. (См. раздел «Конвейерная обработка изображений» главы 8.) Если растровые данные считываются из видеобуфера, выполняются операции при пересылке пикселов (масштабирование, смешение, отображение и ограничивание), Затем результаты упаковываются согласно формату и возвращаются в массив в системной памяти. Существуют специальные пиксельные операции для копирования информации из одной части видеобуфера в другую или в память текстур.
Операции при пересылке пикселов выполняются однократно перед тем, как данные записываются в память текстур или возвращаются в видеобуфер. Компоновка текстур Приложения ОрепСЕ могут накладывать текстурные изображения на графические объекты с целью придания последним большего реализма. Если используется несколько изображений текстур, представляется разумным поместить их в текстурные объекты для того, чтобы переключаться между изображениями стало просто. Некоторые реализации Орепос имеют специальные средства для увеличения производительности текстурирования. Например, может существовать специальная, высокопроизводительная память текстур.
Если такая память присутствует, текстурным объектам могут назначаться приоритеты для контроля над использованием атого ограничешюго и очень ценного ресурса. Растеризация Растеризация — это преобразование векторных и растровых данных во фрагменты. Каждому квадратному фрагменту соответствует пиксел в видеобуферс.
Библиотеки, связанные с Орелб~ 33 Учитываются прерывистые линии и многоугольники, ширина линии, размер точек, модель закраски и вычисление покрытия для поддержки сглаживания, так как вершины связаны в линии, или вычисляются внутренние пикселы для закрашенных многоугольников. С каждым фрагментом связаны значения цвета и глубины. Операции над фрагментами Перед записью значений в видеобуфер выполняется ряд операций, которые могут изменить или даже отбросить фрагменты. Все эти операции могут быть разрешены или запрещены (включены или выключены). Первая ожидаемая операция — текстурирование, когда тексел (элемент текстуры) генерируется из памяти текстур для каждого фрагмента и применяется к фрагменту.
Затем может выполняться вычисление тумана, затем тест отсечения, альфа-тест, тест трафарета и тест буфера глубины (буфер глубины связан с удалением невидимых поверхностей). Неудачное завершение теста может прервать процесс фрагментации. Далее производятся смешивание, размытие, логические операции и наложение битовой маски (см. главы 6 и 10). Наконец сформированные фрагменты рисуются в соответствующем буфере, где из них формируются пикселы и определяется их окончательное местоположение. Библиотеки, связанные с ОрепЫ ОрепС1.
предоставляет мощный, но простой набор команд, и все высокоуровневое рисование должно быть определено в терминах этих команд. К тому же программы ОрепСЕ используют базовые механизмы оконной системы. Несколько библиотек, приведенных ниже, позволяют упростить решение программных задач; ° ТЬе ОрепС1.
()Г!!!гу ЫЬгагу (СГЛАЗ) содержит несколько команд, использующих низкоуровневые команды ОрепС1., которые позволяют устанавливать значения видовых матриц и матриц проекций, выполнять разбивку на многоугольники н рендеринг поверхностей. Эта библиотека входит в состав любой реализации ОрепС . Составляющие С1Л) описаны в Орели йе~егепсе Мапииб Наиболее полезные команды СЬ() описаны в данной книге, в соответствующих разделах, как, например, в главе 11 и в разделе «Интерфейс !ч()КВВ библиотеки СШ» главы !2. Все команды СШ начинаются с я1ш ° Для каждой оконной системы существуют библиотеки, расширяющие функциональные возможности Орели по поддержке данной оконной системы. Для компьютеров, использующих систему Х тт*1пг)овз, таким расширением является библиотека СЕХ (ОрепСЕ Ехсепз1оп го сйе Х Ъ'!пбо лз 5уъгегп).
Команды С).Х начинаются с префикса к1х. Для М!сгозо(г Ю1пс!оъз такой библиотекой является ЖС1.. Все команды ЪЪ'СЬ начинаются с ня1. Для ОЯ/2 от 1ВМ используется РСЬ (Ргезептат!оп Мапаяег го ОрепСЬ), и ее команды на- 34 Глава 1 ° Введение в Орепб~ чинаются с рд1, Для Арр1е используется библиотека АС1., команды которой начинаются с ад1. Все эти расширения для оконной системы более подробно описаны в приложении В. Кроме того, команды С1.Х представлены в ОрепСб йе)егепсе Мапиаб ° СШТ (ТЬе ОрепСь УГ!1!Гу Тоо1й!1) — зто независимый от оконной системы набор инструментов, написанных Марком Килгардом (Маги Кг1яаг<1) для того, чтобы устранить различия между различными АР! по управлению окнами.
Библиотека СШТ рассматривается в следуюшем разделе и более подробно описана в книге Марка Килгарда «ОрепС1. Ройгатття)ог Ггге Х Иггпггои Яузгегл» (издательство А<<<уй«оп-й'е№1еу, 1996). Команды СШТ лепсо опознаются по префиксу д1ог. Если вас интересуют исходные коды для СШТ, см, раздел «Как получить примеры программ» этой книги. Включаемые файлы Обычно в заголовочные данные каждого файла ОрепСЕ-приложения включается файл д\ . и. Почти все приложения ОрспС1. исгюльзуют СШ, вышеупомянутую библиотеку утилит ОрепС1., которая тянет за собой заголовочный файл д1о.в. Итак, почти все исходные тексты программ ОрепС1. начинаются так: №1лсзоае <бЬГХГ.Л> №!лсгнав <бГГХГо.л> ПРИМЕЧАНИЕ При работе с М!сговоГГ уу1лдоггв до присоединения д1Л и д1о.ь требуется включить»«!обо»уз№Ь твк квк некоторые макросы, используемые в версиях д!.Л и д1о. Л для М!сговоГГ УУ1лг!оигв, определены в ил!лаоигв.п. Библиотеки ОрепС1.
постоянно изменяются. Различные производители графического оборудования добавляют новые возможности, которые могут быть не учтены в д1. П. Для их использования в ОрепС1 имеется дополнительный заголовочный файл д1ех С. П. Этот файл содержит последние дополнения, и его можно получить на веб-сайте производителя оборудования или на официальном сайте ОрепС1 (гз11р:/гггууг»у.орепд(.огд). Как и любой заголовочный файл, он включается следуюшей командой; №!лсголе "Хгехг.ь" Вы, должно быть, заметили, что имя файла заключено в кавычки, а не в скобки. Это неспроста. Так как д1ехг. и предоставляет доступ к новым возможностям, введенным производителями видеокарт, вам лучше всего будет взять последнюю версию из Интернета для того, чтобы успешно компилировать программы. Кроме того, вы можете столкнуться с проблемой отсутствия разрешения на запись файла д1ехс.
П в системный каталог заголовочных файлов (например, /взг/!пс1цг!е) в системах 111«1Х. Если вы используете дополнительные интерфейсные библиотеки, такие как СЕХ, АС1., РС1. или ЪЪ'С(., вам нужно включить дополнительные заголовочные Библиотеки, связанные с ОрепбЬ 35 файлы. Например, для СЕХ необходимо добавить следующие строки в программный код: №!пстипе <Х11ГХ11Ь.П> №кпстцпе <Сиудгх.ь> В Мкгозой тлт1пг)отуз для библиотеки ЮСЕ достаточно указать №1пс1нпе <и!опоив.ь> Если вы испольауете С1Л1Т, вам нужно добавить строку №1пс1ипе <6ШВ1оС,П> ПРИМЕЧАНИЕ Подключение р!цг.в гарантирует, что йьв и й!ц. Ь также подключены, поэтому подключение всех трех библиотек является избыточным. Кроме того, й!цг.ь до включения йьп н бац.
Ь определяет все используемые макросы, все зависимые от операционной системы. Поэтому, чтобы уменьшить вашу программу, использующую бгнт, подключите только фцг.ь. Большинство программ ОрепСЕ также обращаются к стандартным системным библиотекам С, то есть требу1от заголовочные файлы, не связанные с графикой, например: №1пс1оее <зтп11Ь.П> №1пс1цпе <зтп1о.ь> В твко~ах наших примеров определения заголовочных файлов отсутствуют по причине обычной удобочитаемостн. 610Т, набор инструментов Орепб~ Как известно, библиотека ОрепСЕ содержит команды отрисовки, причем она разрабатывалась платформо-независимой.
Поэтому в ней нет команд для открытия окон или обработки событий от клавиатуры или мыши. К сожалению, невозможно написать полноценную графическую программу без, как минимум, открытия окна, а более интересные приложения требуют пользовательского ввода или других сервисных функций операционной системы или оконной снстсмы. Во многих случаях законченные программы представляют больший интерес, поэтому в данной книге используется С1ЯТ для упрощения работы с окнами, определения ввода и т, д, Если у вас есть реализации ОрепС1 и Сь11Т, примеры из данной книги должны запускаться без внесения каких-либо изменений.