Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 639176)
Контекстум
Руконтекст антиплагиат

OpenGL ES 3.0 : руководство разработчика (3000,00 руб.)

0   0
Первый авторГинсбург Дэн
АвторыПурномо Будирижанто
ИздательствоМ.: ДМК Пресс
Страниц449
ID835002
АннотацияOpenGL ES — это ведущий интерфейс и графическая библиотека для рендеринга сложной трехмерной графики на мобильных устройствах. Последняя версия, OpenGL ES 3.0, делает возможным создания потрясающей графики для новых игр и приложений, не влияя на производительность устройства и время работы аккумулятора. В данной книге авторы рассматривает весь API и язык для написания шейдеров. Они внимательно рассматривают возможности OpenGL ES такие как теневые карты, дублирование геометрии, рендеринг в несколько текстур, uniform-буферы, сжатие текстур, бинарное представление программ и преобразование обратной связи. Шаг за шагом вы перейдете от вводных примеров к продвинутому попиксельному освещению и системам частиц. Также вы найдете содержательные советы по оптимизации быстродействия, максимизации эффективности работы API и GPU и полном использовании OpenGL ES в широком спектре приложений. На сайте издательства выложены примеры к книге на языке С.
Кому рекомендованоИздание предназначено программистам мобильных приложений, желающих максимально использовать графические возможности своих устройств.
ISBN978-5-89818-312-7
УДК004’27OpenGL ES 3
ББК32.972.121
Гинсбург, Д. . OpenGL ES 3.0 : руководство разработчика / Б. . Пурномо; Д. . Гинсбург .— Пер. с англ. А. Борескова. — 2-е изд., эл. — Москва : ДМК Пресс, 2023 .— 449 с. — 1 файл pdf : 449 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. — ISBN 978-5-89818-312-7 .— URL: https://rucont.ru/efd/835002 (дата обращения: 19.06.2024)

Предпросмотр (выдержки из произведения)

OpenGL_ES_3.0__руководство_разработчика.pdf
Стр.5
Стр.6
Стр.7
Стр.8
Стр.9
Стр.10
Стр.11
Стр.12
Стр.13
Стр.14
OpenGL_ES_3.0__руководство_разработчика.pdf
УДК 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
Стр.5
Содержание Предисловие ......................................................... 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
Стр.6
6  Содержание Создание простого вершинного и фрагментного шейдеров .........................................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
Содержание  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
Стр.8
8  Введение Вывод примитивов ................................................................................................................... 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
Содержание  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
Стр.10
10  Содержание Альфа-тест (с использованием 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
Стр.11
Содержание  11 Уничтожение фреймбуферов и рендербуферов ............................................................. 310 Уничтожение рендербуферов, которые используются как подключение к фреймбуферу ................................................................................................................... 311 Чтение пикселов и объекты-фреймбуферы ............................................................. 311 Примеры ....................................................................................................................................... 312 Подсказки по оптимизации ................................................................................................... 318 Резюме .......................................................................................................................................... 318 Глава 13. Объекты синхронизации и барьеры .............320 Команды glFlush и glFinish .................................................................................................... 320 Зачем использовать объект синхронизации .................................................................... 321 Создание и уничтожение объекта синхронизации........................................................ 321 Ожидание объекта синхронизации..................................................................................... 322 Пример .......................................................................................................................................... 323 Резюме .......................................................................................................................................... 324 Глава 14. Продвинутое программирование с OpenGL ES 3.0 .....................................................325 Пофрагментное освещение .................................................................................................... 325 Освещение с использованием карты нормалей ...................................................... 326 Шейдеры для освещения ................................................................................................ 327 Уравнения освещения ..................................................................................................... 331 Имитация отражения окружающей среды (environment mapping) ........................ 331 Система частиц при помощи точечных спрайтов .................................................. 335 Настройка системы частиц ............................................................................................ 335 Вершинный шейдер для системы частиц .................................................................. 336 Фрагментный шейдер для системы частиц ............................................................. 338 Системы частиц с использованием преобразования обратной связи .................... 340 Алгоритм рендеринга системы частиц ....................................................................... 341 Создание частиц при помощи преобразования обратной связи ....................... 342 Рендеринг частиц ............................................................................................................... 346 Постобработка изображений ................................................................................................ 347 Настройка рендеринга в текстуру ............................................................................... 348 Фрагментный шейдер размытия .................................................................................. 348 Эффект свечения ............................................................................................................... 349 Проективное текстурирование ............................................................................................. 351 Основы проективного текстурирования ................................................................... 351 Матрицы для проективного текстурирования ........................................................ 352 Шейдеры проективного источника света ................................................................. 354
Стр.12
12  Содержание Шум при помощи трехмерной текстуры .......................................................................... 357 Получение шума ................................................................................................................ 357 Использование шума ........................................................................................................ 361 Процедурное текстурирование ............................................................................................ 363 Пример процедурной текстуры .................................................................................... 364 Антиалиасинг процедурных текстур .......................................................................... 367 Дополнительная литература по процедурным текстурам .................................. 369 Рендеринг ландшафта при помощи чтения из текстуры в вершинном шейдере ......................................................................................................................................... 370 Вычисление нормали в вершине и чтение значения высоты в вершинном шейдере ...................................................................................................... 371 Дополнительное чтение по рендерингу больших ландшафтов ......................... 372 Рендеринг теней при помощи карты глубины ................................................................ 373 Рендеринг из положения источника света в текстуру глубины ....................... 373 Рендеринг из положения наблюдателя с использованием текстуры глубины ................................................................................................................................. 376 Резюме .......................................................................................................................................... 378 Глава 15. Получение состояния ................................379 Запросы строковых значений о реализации OpenGL ES 3.0 ..................................... 379 Получение информации о зависящих от реализации ограничениях ..................... 380 Запрос состояния OpenGL ES .............................................................................................. 383 Пожелания (hints) .................................................................................................................... 387 Запросы по идентификаторам .............................................................................................. 387 Управление непрограммируемыми операциями и запрос их состояния .............. 388 Получение состояния шейдеров и программ .................................................................. 389 Получение информации о вершинных атрибутах ......................................................... 391 Получение состояния текстуры ........................................................................................... 391 Получение состояния сэмплера ........................................................................................... 392 Получение информации об асинхронном объекте-запросе (query) ....................... 392 Получение информации об объекте синхронизации ................................................... 393 Получение информации о вершинном буфере ............................................................... 394 Получение информации о рендербуфере и фреймбуфере ......................................... 394 Резюме .......................................................................................................................................... 396 Глава 16. Платформы OpenGL ES ..............................397 Сборка для Microsoft Windows с использованием Visual Studio ............................. 397 Сборка для Ubuntu Linux ....................................................................................................... 399 Сборка для Android 4.3+ NDK (C++) ................................................................................ 400
Стр.13
Содержание  13 Пререквизиты ..................................................................................................................... 400 Сборка примеров при помощи Android NDK .......................................................... 401 Сборка на Android 4.3+ SDK (Java) ................................................................................... 401 Сборка для iOS 7 ....................................................................................................................... 402 Пререквизиты ..................................................................................................................... 402 Сборка примеров при помощи XCode 5 .................................................................... 402 Резюме .......................................................................................................................................... 404 Приложение А. GL_HALF_FLOAT ................................405 16-битовое число с плавающей точкой.............................................................................. 405 Преобразование значения с плавающей точкой в 16-битовое значение с плавающей точкой ................................................................................................................. 406 Приложение Б. Встроенные функции ........................410 Функции для работы с углами и тригонометрические функции ............................ 411 Экспоненциальные функции ................................................................................................ 412 Общие функции ....................................................................................................................... 412 Функции для упаковки и распаковки значений с плавающей точкой .................. 414 Геометрические функции ....................................................................................................... 416 Матричные функции ............................................................................................................... 416 Векторные логические функции ......................................................................................... 417 Функции обращения к текстуре .......................................................................................... 418 Функции по обработке фрагментов ................................................................................... 422 Приложение В. Описание библиотеки, использованной в данной книге ...............................424 Базовые функции ...................................................................................................................... 424 Функции для преобразований ............................................................................................. 428
Стр.14

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст