OpenGL ES 3.0 : руководство разработчика
Покупка
Тематика:
Проектирование, отладка и тестирование ПО. Вспомогательные средства проектирования. CASE-технологии
Издательство:
ДМК Пресс
Перевод:
Боресков Алексей Викторович
Год издания: 2023
Кол-во страниц: 449
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-89818-312-7
Артикул: 816349.01.99
OpenGL ES — это ведущий интерфейс и графическая библиотека для рендеринга сложной трехмерной графики на мобильных устройствах. Последняя версия, OpenGL ES 3.0, делает возможным создания потрясающей графики для новых игр и приложений, не влияя на производительность устройства и время работы аккумулятора. В данной книге авторы рассматривает весь API и язык для написания шейдеров. Они внимательно рассматривают возможности OpenGL ES такие как теневые карты, дублирование геометрии, рендеринг в несколько текстур, uniform-буферы, сжатие текстур, бинарное представление программ и преобразование обратной связи. Шаг за шагом вы перейдете от вводных примеров к продвинутому попиксельному освещению и системам частиц. Также вы найдете содержательные советы по оптимизации быстродействия, максимизации эффективности работы API и GPU и полном использовании OpenGL ES в широком спектре приложений. На сайте издательства выложены примеры к книге на языке С. Издание предназначено программистам мобильных приложений, желающих максимально
использовать графические возможности своих устройств.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Мобильная разработка
- Проектирование, отладка и тестирование ПО. Вспомогательные средства проектирования. CASE-технологии
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
OpenGL ES 3.0 Руководство разработчика
With Earlier Contributions From Dave Shreiner Aaftab Munshi OpenGL ES 3.0 Programming Guide Dan Ginsburg, Budirijanto Purnomo Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City Addison-Wesley
Совместно с Дейвом Шрейнером и Аафтабом Мунши OpenGL ES 3.0 Руководство разработчика Москва, 2023 Дэн Гинсбург, Будирижанто Пурномо 2-издание, электронное
УДК 004’27OpenGL ES 3 ББК 32.972.121 Г49 Г49 Гинсбург, Дэн. OpenGL ES 3.0 : руководство разработчика / Д. Гинсбург, Б. Пурномо ; пер. с англ. А. Борескова. — 2-е изд., эл. — 1 файл pdf : 449 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-312-7 OpenGL ES — это ведущий интерфейс и графическая библиотека для рендеринга сложной трехмерной графики на мобильных устройствах. Последняя версия, OpenGL ES 3.0, делает возможным создания потрясающей графики для новых игр и приложений, не влияя на производительность устройства и время работы аккумулятора. В данной книге авторы рассматривает весь API и язык для написания шейдеров. Они внимательно рассматривают возможности OpenGL ES такие как теневые карты, дублирование геометрии, рендеринг в несколько текстур, uniform-буферы, сжатие текстур, бинарное представление программ и преобразование обратной связи. Шаг за шагом вы перейдете от вводных примеров к продвинутому попиксельному освещению и системам частиц. Также вы найдете содержательные советы по оптимизации быстродействия, максимизации эффективности работы API и GPU и полном использовании OpenGL ES в широком спектре приложений. На сайте издательства выложены примеры к книге на языке С. Издание предназначено программистам мобильных приложений, желающих максимально использовать графические возможности своих устройств. УДК 004’27OpenGL ES 3 ББК 32.972.121 Электронное издание на основе печатного издания: OpenGL ES 3.0 : руководство разработчика / Д. Гинсбург, Б. Пурномо ; пер. с англ. А. Борескова. — Москва : ДМК Пресс, 2015. — 448 с. — ISBN 978-5-97060-256-0. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-312-7 © 2014 Pearson Education, Inc. © Оформление, перевод, ДМК Пресс, 2015
Содержание Предисловие ......................................................... 14 Введение .............................................................. 15 Благодарности ....................................................... 20 Об авторах ............................................................ 22 Глава 1. Введение в OpenGL ES 3.0 ............................ 23 OpenGL ES 3.0 ...............................................................................................................................25 Вершинный шейдер .............................................................................................................26 Сборка примитивов .............................................................................................................28 Растеризация ..........................................................................................................................28 Фрагментный шейдер .........................................................................................................29 Пофрагментные операции .................................................................................................30 Что нового в OpenGL ES 3.0? ..................................................................................................32 Текстурирование ...................................................................................................................32 Шейдеры ..................................................................................................................................34 Геометрия .................................................................................................................................35 Буферные объекты ...............................................................................................................36 Фреймбуфер ...........................................................................................................................37 OpenGL ES 3.0 и обратная совместимость ..........................................................................37 EGL ...................................................................................................................................................38 Программирование с OpenGL ES 3.0 ............................................................................39 Библиотеки и заголовочные файлы ...............................................................................39 Синтаксис EGL .............................................................................................................................40 Синтаксис команд OpenGL ES ...............................................................................................40 Обработка ошибок .......................................................................................................................42 Основы управления состоянием ............................................................................................43 Дальнейшее чтение ......................................................................................................................44 Глава 2. Hello Triangle: пример использования OpenGL ES 3.0 ........................................................ 45 Используемая библиотека ........................................................................................................45 Где можно скачать примеры .....................................................................................................46 Пример Hello Triangle.................................................................................................................46 Использование библиотеки утилит для OpenGL ES 3.0................................................50
Содержание Создание простого вершинного и фрагментного шейдеров .........................................51 Компиляция и загрузка шейдеров .........................................................................................53 Создание объекта-программы и сборка шейдеров ...........................................................54 Задание области вывода и очистка буфера цвета .............................................................55 Загрузка геометрии и вывод примитива ..............................................................................56 Отображение буфера ..................................................................................................................56 Резюме .............................................................................................................................................57 Глава 3. Введение в EGL ........................................... 58 Взаимодействие с оконной системой ....................................................................................58 Проверка на ошибки ...................................................................................................................59 Инициализация EGL ..................................................................................................................60 Определение допустимых конфигураций поверхностей ...............................................60 Получение атрибутов EGLConfig ...........................................................................................61 Позволяем EGL выбрать конфигурацию ............................................................................64 Создание видимой области для рендеринга: окна EGL .................................................66 Создание внеэкранных областей для рендеринга: п-буферы EGL .............................68 Создание контекста для рендеринга .....................................................................................71 Делаем EGLContext текущим ..................................................................................................73 Собираем все вместе ...................................................................................................................73 Синхронизация рендеринга .....................................................................................................75 Резюме .............................................................................................................................................76 Глава 4. Шейдеры и программы ................................ 77 Шейдеры и программы ..............................................................................................................77 Создание и компилирование шейдера ..........................................................................78 Создание и сборка программы .........................................................................................81 Uniform-переменные и атрибуты ...........................................................................................85 Получение информации и задание значений для uniform-переменных ...........86 Uniform-буферы ....................................................................................................................92 Получение и задание атрибутов .....................................................................................96 Компилятор шейдеров ...............................................................................................................97 Бинарные программы .................................................................................................................97 Резюме .............................................................................................................................................98 Глава 5. Шейдерный язык OpenGL ES ......................... 99 Основы шейдерного языка OpenGL ES ...............................................................................99 Задание версии шейдера ......................................................................................................... 100 Переменные и типы переменных ........................................................................................ 100
Содержание 7 Конструкторы переменных ................................................................................................... 101 Векторные и матричные компоненты ................................................................................ 102 Константы .................................................................................................................................... 103 Структуры ................................................................................................................................... 104 Массивы ....................................................................................................................................... 104 Операторы ................................................................................................................................... 105 Функции....................................................................................................................................... 106 Встроенные функции............................................................................................................... 107 Управляющие операторы ....................................................................................................... 107 Uniform-переменные ................................................................................................................ 108 Uniform-блоки ............................................................................................................................ 109 Входные и выходные значения вершинного/фрагментного шейдера ................... 111 Описатели интерполяции ...................................................................................................... 113 Препроцессор и его команды ................................................................................................ 114 Упаковка uniform-переменных и интерполяторов ........................................................ 116 Описатели точности ................................................................................................................. 117 Инвариантность......................................................................................................................... 118 Резюме .......................................................................................................................................... 121 Глава 6. Атрибуты вершины, вершинные массивы и объекты-буферы .................................................122 Задание данных для вершинных атрибутов .................................................................... 123 Постоянный вершинный атрибут ................................................................................ 123 Вершинные массивы ........................................................................................................ 123 Советы по оптимизации .................................................................................................. 127 Объявление переменных для вершинного атрибута в вершинном шейдере ....... 131 Привязка вершинного атрибута к переменной в шейдере .................................. 133 Вершинные объекты-буферы ............................................................................................... 136 Объект состояния вершинных буферов (Vertex Array Object) ................................ 145 Отображение буферов в память приложения ................................................................. 149 Сбрасывание отображенного буфера ......................................................................... 152 Копирование данных между буферами ............................................................................. 152 Резюме .......................................................................................................................................... 153 Глава 7. Сборка примитивов и растеризация ..............155 Примитивы .................................................................................................................................. 155 Треугольники ...................................................................................................................... 155 Отрезки ................................................................................................................................. 156 Точечные спрайты ............................................................................................................. 157
Введение Вывод примитивов ................................................................................................................... 159 Перезапуск примитива .................................................................................................... 161 Провоцирующая вершина (provoking vertex) ......................................................... 162 Дублирование геометрии (geometry instancing) ..................................................... 162 Советы по оптимизации .................................................................................................. 165 Сборка примитивов .................................................................................................................. 167 Системы координат .......................................................................................................... 168 Отсечение ............................................................................................................................. 168 Перспективное деление ................................................................................................... 170 Преобразование в область видимости ........................................................................ 170 Растеризация .............................................................................................................................. 171 Отсечение ............................................................................................................................. 171 Смещение полигона .......................................................................................................... 173 Запросы видимости .................................................................................................................. 175 Резюме .......................................................................................................................................... 177 Глава 8. Вершинные шейдеры .................................178 Обзор вершинного шейдера .................................................................................................. 179 Встроенные переменные вершинного шейдера ...................................................... 180 Встроенные специальные переменные ...................................................................... 180 Встроенные uniform-переменные, хранящие состояние ...................................... 181 Встроенные константы .................................................................................................... 181 Описатели точности ......................................................................................................... 182 Ограничения на использование uniform-переменных в вершинном шейдере ................................................................................................................................. 183 Примеры вершинных шейдеров .......................................................................................... 186 Матричные преобразования .......................................................................................... 186 Модельно-видовая матрица ........................................................................................... 187 Матрица проектирования ............................................................................................... 188 Расчет освещения в вершинном шейдере ................................................................. 188 Генерация текстурных координат ....................................................................................... 194 Вершинный скиннинг ............................................................................................................. 195 Преобразование обратной связи (transform feedback) ................................................. 200 Вершинные текстуры............................................................................................................... 202 Вершинный конвейер OpenGL ES 1.1 как вершинный шейдер OpenGL ES 3.0 ............................................................................................................................ 203 Резюме .......................................................................................................................................... 210 Глава 9. Текстурирование ........................................211 Основы текстурирования ....................................................................................................... 211
Содержание 9 Двухмерные текстуры ...................................................................................................... 211 Кубические текстурные карты ...................................................................................... 213 Трехмерные текстуры ....................................................................................................... 214 Массив двухмерных текстур ......................................................................................... 214 Текстурные объекты и загрузка текстур .................................................................... 215 Фильтрование текстуры и пирамидальное фильтрование ................................. 220 Бесшовная фильтрация кубических текстур ........................................................... 224 Автоматическое построение пирамиды изображений ......................................... 224 Отсечение текстурных координат ............................................................................... 225 Перестановки каналов ..................................................................................................... 227 Текстурный уровень детализации ............................................................................... 227 Сравнение для текстуры глубины (Percentage Closest Filtering, PCF) .......... 228 Форматы текстур ............................................................................................................... 228 Нормализованные текстурные форматы .................................................................. 229 Форматы текстур с плавающей точкой ..................................................................... 230 Целочисленные текстурные форматы ........................................................................ 231 Форматы текстур с общей экспонентой .................................................................... 232 Текстурные форматы sRGB ........................................................................................... 233 Форматы для текстур глубины ..................................................................................... 234 Использование текстур в шейдере .............................................................................. 234 Пример использования кубической текстуры ........................................................ 237 Загрузка трехмерных текстур и массивов двухмерных текстур ....................... 239 Сжатые текстуры....................................................................................................................... 240 Задание части изображения текстуры ............................................................................... 243 Копирование текстурных данных из буфера цвета ...................................................... 246 Объекты-сэмплеры ................................................................................................................... 249 Неизменяемые текстуры ........................................................................................................ 252 Распаковка объектов-буферов.............................................................................................. 253 Резюме .......................................................................................................................................... 254 Глава 10. Фрагментные шейдеры .............................255 Пример реализации фиксированного конвейера .......................................................... 256 Обзор фрагментного шейдера .............................................................................................. 257 Встроенные специальные переменные ...................................................................... 258 Встроенные константы .................................................................................................... 259 Описатели точности ......................................................................................................... 260 Реализация алгоритмов из фиксированного конвейера при помощи шейдеров ...................................................................................................................................... 260 Мультитекстурирование ................................................................................................. 261 Туман ...................................................................................................................................... 262
Содержание Альфа-тест (с использованием discard) ..................................................................... 265 Задаваемые пользователем плоскости отсечения .................................................. 267 Резюме .......................................................................................................................................... 269 Глава 11. Операции с фрагментами ..........................270 Буферы ......................................................................................................................................... 270 Запрос дополнительных буферов ............................................................................... 271 Очистка буферов ............................................................................................................... 272 Использование масок для управления записью во фреймбуферы .................. 273 Тесты фрагментов и операции .............................................................................................. 275 Использование теста попадания в прямоугольник (scissor test) ...................... 275 Тесты трафарета ................................................................................................................. 276 Тесты глубины .................................................................................................................... 281 Смешение цветов (альфа-блендинг) .................................................................................. 282 Растрирование ............................................................................................................................ 284 Антиалиасинг с использованием мультисэмплинга ..................................................... 284 Использование спецификатора centroid ................................................................... 285 Чтение и запись пикселов во фреймбуфер ...................................................................... 286 Объекты-буферы для упаковки пикселов ................................................................ 289 Рендеринг в несколько буферов цвета (MRT) ............................................................... 290 Резюме .......................................................................................................................................... 293 Глава 12. Объекты-фреймбуферы ............................294 Зачем нужны объекты-фреймбуферы? ............................................................................. 294 Объекты-фреймбуферы и рендербуферы ....................................................................... 296 Выбор между рендербуфером и текстурой в качестве подключения к фреймбуферу ................................................................................................................... 296 Сравнение объектов-фреймбуферов с поверхностями EGL .............................. 297 Создание объектов-фреймбуферов и рендербуферов.................................................. 298 Использование рендербуферов ............................................................................................ 298 Рендербуферы с мультисэмплингом........................................................................... 300 Форматы рендербуфера .................................................................................................. 301 Использование объектов-фреймбуферов ......................................................................... 302 Подключение рендербуфера к точке подключения фреймбуфера .................. 303 Подключение двухмерной текстуры к фреймбуферу........................................... 304 Подключение слоя трехмерной текстуры к фреймбуферу ................................. 305 Проверка полноты фреймбуфера ................................................................................ 306 Копирование между фреймбуферами ............................................................................... 307 Сообщение о том, что содержимое фреймбуфера больше не нужно ...................... 309