Сорок(и более) штрихов о прочитанных(переведённых) книгах.

Штрих первый. 2013 год.

Кари Пулли, Томи Аарнио, Вилле Миеттинен, Киммо Роимела, Яни Ваарала.

Мобильная 3D-графика с OpenGL ES и M3G.

(Kari Pulli, Tomi Aarnio, Ville Miettinen, Kimmo Roimela, Jani Vaarala.

Mobile 3D Graphics with OpenGL ES and M3G, ISBN 978-0-12-373727-4, Copyright © 2008 Elsevier)

Предмет этой книги виден в названиях ее частей:

ЧАСТЬ I АНАТОМИЯ ГРАФИЧЕСКОГО ДВИЖКА

ЧАСТЬ II OPENGL ES и EGL

ЧАСТЬ III M3G

Первая часть - это «Библия мобильной графики», вторая часть - это «Евангелие мобильной графики», а третья часть - это «Новейшая история мобильной графики» в виде высокоуровневой мобильной графики(графы сцен, скиннинг и морфинг). Книга не только академична, но и прагматична.

p.s.

Выдержка из книги:

О книге

Эта книга - о написании приложений c трехмерной графикой реального времени для мобильных устройств. Мы предполагаем, что читатель имеет некоторые базовые знания в математике, программировании и компьютерной графике, но не обязательно для мобильных устройств. Возможности трехмерной графикой мобильных устройств доступны через два стандартизированных интерфейса прикладного программирования (application programming interfaces; API): OpenGL ES, обычно доступный из C или C++ и M3G для мобильной Java. Мы вводим последний стандарт в терминах предыдущего. Так как OpenGL ES используется в качестве основного стандартного компонента во многих реальных промышленных реализациях M3G, то отображение этих отношений (прим. между стандартами) очень полезно для описания внутренней работы M3G. Кроме мобильных телефонов, эти два API подходят также для программирования других встроенных устройств, отличных от мобильных: от автомобильных систем навигации до экранов микроволновых печей. Однако, большинство таких платформ – закрыты для третьих лиц и они не могут разрабатывать и устанавливать на них новые приложения. В отличие от этих устройств, большинство мобильных телефонов - открыты: третьи лица- профессиональные разработчики программного обеспечения, студенты, и некоторые энтузиасты могут разрабатывать, поставлять и устанавливать на них собственные приложения. Наличие под рукой программируемого мобильного телефона для проверки методов, описанных в этой книге, - реально прекрасная идея. Однако, частности(детали) разработки мобильных приложений значительно изменяются для разных платформ, и мы отсылаем к описанию этих частностей в документации разработчика каждой платформы. Эта книга состоит из трех частей и нескольких приложений. Первая часть вводит понятия 3D-графики, необходимые для понимания OpenGL ES и M3G, которые в свою очередь раскрываются соответственно в II и III частях. Использование каждого API демонстрируется с практическими примерами кода. В приложениях к книге для разработчиков и C/C++ и Java, приведены дополнительная информация и советы по оптимизации, а так же глоссарий акронимов и терминов, используемых в этой книге. Есть также сопутствующий книге вебсайт, www.graphicsformasses.com, содержащий примеры кода, опечатки и связи с другими онлайн-ресурсами.

Для читателей новичков в компьютерной графике, рекомендуем книгу о всестороннем рассмотрении трехмерной графики - “Real-Time Rendering” (“Рендеринг в реальном времени”) Томаса Акенине-Моллера(Tomas Akenine-Moller) и Эрика Хэйнеса(Eric Haines) [AMH02]. Книга “OpenGL Red Book”(“Красная книга OpenGL”) [SWN05] - традиционное руководство новичка в OpenGL, в то время как книга Макрейнолдса(McReynolds) и Блайзэ(Blythe) [MB05] содержит коллекцию более продвинутых советов по OpenGL. Незнакомые с программированием на мобильной Java могут найти много полезного в книге “Beginning J2ME: From Novice to Professional” (“Начало J2ME: От новичка до профессионала”) от Синга Ли(Sing Li) и Джонатана Нудсена(Jonathan Knudsen) [LK05].

Для кого предназначена эта книга?

"Эта книга - написанная одними из ключевых технических экспертов области, предоставляет всеобъемлющее, но практическое и понятное введение в 3D-графику для любого инженер-программиста, стремящегося восхищать пользователей богатыми интерактивными 3D-интерфейсами на их телефонах. Как и стандарты OpenGL ES и M3G, которые она охватывает, эта книга предназначена для того, чтобы стать прочным стандартом в течение многих лет в будущем ". Линкольн Валлен(Lincoln Wallen), технический директор(CTO) Electronic Arts, Mobile

Разработчики графики и игр должны научиться программировать для мобильности. Эта книга научит вас как это делать. "Эта книга является прекрасным введением в M3G. Авторы - все опытные разработчики и пользователи M3G, и они делают огромную работу по передаче этого опыта, а также большого количества практических советов, подтвержденных в этой области. Шон Эллис(Sean Ellis), инженер-консультант по графике, ARM Ltd

Разработчики графики и игр должны научиться программировать для мобильности. Эта книга научит вас как это делать.

Что рассматривает эта книга?

Предисловие

Глава1. Введение 1.1 О книге 1.1.1 Типографские соглашения 1.2 Графика на карманных устройствах 1.2.1 Категории устройств 1.2.2 Технологии дисплеев 1.2.3 Вычислительная мощность 1.2.4 Аппаратные средства графики 1.2.5 Среда выполнения 1.3 Стандарты мобильной графики 1.3.1 Борьба с фрагментацией 1.3.2 Принципы проектирования 1.3.3 OPENGL ES 1.3.4 M3G 1.3.5 Связанные стандарты

Часть I. Анатомия графического движка

Глава 2. Линейная алгебра для 3D-графики 2.1 Системы координат 2.1.1 Векторы и точки 2.1.2 Умножение векторов 2.1.3 Однородные координаты 2.2 Матрицы 2.2.1 Матричные произведения 2.2.2 Единичная и обратная матрицы 2.2.3 Составные преобразования 2.2.4 Преобразование нормалей 2.3 Аффинные преобразования 2.3.1 Типы аффинных преобразований 2.3.2 Преобразование вокруг центра преобразования 2.3.3 Пример иерархического моделирования 2.4 Система видовых координат 2.5 Проецирование 2.5.1 Ближняя и дальняя плоскости и буфер глубины 2.5.2 Общий усеченный объем видимости 2.5.3 Параллельное проецирование 2.6 Видовой порт и двумерные системы координат

Глава 3. Рендеринг низкого уровня 3.1 Рендеринг примитивов 3.1.1 Геометрические примитивы 3.1.2 Растровые примитивы 3.2 Освещение 3.2.1 Цвет 3.2.2 Векторы нормалей 3.2.3 Модели отражения и материалы 3.2.4 Источники света 3.2.5 Полное уравнение освещения 3.3 Отбраковка и отсечение 3.3.1 Отбраковка нелицевых сторон 3.3.2 Отсечение и отбраковка усеченным объемом видимости 3.4 Растеризация 3.4.1 Наложение текстуры 3.4.2 Интерполяция градиентов 3.4.3 Освещение на основе текстуры 3.4.4 Туман 3.4.5 Сглаживание 3.5 Пофрагментные операции 3.5.1 Тесты фрагмента 3.5.2 Смешивание 3.5.3 Возбуждение, логические операции и маскировка 3.6 Цикл жизни кадра 3.6.1 Одиночная буферизация против двойной 3.6.2 Комплексная графическая система 3.6.3 Точки синхронизации

Глава 4. Анимация 4.1 Анимация по ключевым кадрам 4.1.1 Интерполяция 4.1.2 Кватернионы 4.2 Деформация мешей 4.2.1 Морфинг 4.2.2 Скиннинг 4.2.3 Другие динамические деформации

Глава 5. Управление сценой 5.1 Меши из треугольников 5.2 Граф сцены 5.2.1 Область применения 5.2.2 Структура данных пространства 5.2.3 Создание контента 5.2.4 Расширяемость 5.2.5 Иерархия классов 5.3 Сохраненный режим рендеринга 5.3.1 Установка камеры и источников света 5.3.2 Улаживание режимов рендеринга 5.3.3 Обнаружение потенциально видимых объектов 5.3.4 Сортировка и рендеринг

Глава 6. Производительность и масштабируемость 6.1 Масштабируемость 6.1.1 Специальные эффекты 6.1.2 Настройка уменьшения детальности 6.2 Оптимизация производительности 6.2.1 Пиксельный конвейер 6.2.2 Вершинный конвейер 6.2.3 Код приложения 6.2.4 Профилирование OPENGL ES-приложения 6.2.5 Списки проверок 6.3 Изменение и запрос режимов 6.3.1 Оптимизация изменений режимов 6.4 Данные модели 6.4.1 Данные вершин 6.4.2 Данные треугольников 6.5 Конвейер преобразований 6.5.1 Иерархия объектов 6.5.2 Порядок рендеринга 6.5.3 Отбраковка 6.6 Освещение 6.6.1 Предварительно вычисленная освещенность 6.7 Текстуры 6.7.1 Хранение текстур

Часть II. OpenGL ES и EGL

Глава 7. Введение в OpenGL ES 7.1 Khronos Group и OpenGL 7.2 Принципы проектирования 7.3 Ресурсы 7.3.1 Документация 7.3.2 Техническая поддержка 7.3.3 Реализации 7.4 Краткий обзор программного API-интерфейса 7.4.1 Профили и версии 7.4.2 Коротко о OpenGL ES 1.0 7.4.3 Новые функциональные возможности в OpenGL ES 1.1 7.4.4 Механизм расширения 7.4.5 Пакет расширений OpenGL ES 7.4.6 API Утилит 7.4.7 Соглашения 7.5 Hello, OpenGL ES!

Глава 8. Преобразование и освещение в OpenGL ES 8.1 Рисование примитивов 8.1.1 Типы примитивов 8.1.2 Задание данных вершин 8.1.3 Рисование примитивов 8.1.4 Объекты буфера вершин 8.2 Конвейер преобразования вершин 8.2.1 Матрицы 8.2.2 Преобразование нормалей 8.2.3 Преобразование координат текстуры 8.2.4 Стеки матриц 8.2.5 Преобразование видового порта 8.2.6 Пользовательские плоскости отсечения 8.3 Цвета и освещение 8.3.1 Задание цветов и материалов 8.3.2 Источники света 8.3.3 Двухстороннее освещение 8.3.4 Закрашивание 8.3.5 Пример освещения

Глава 9. Растеризация и обработка фрагментов в OpenGL ES 9.1 Отбраковка нелицевой поверхности 9.2 Наложение текстуры 9.2.1 Объекты текстуры 9.2.2 Задание данных текстуры 9.2.3 Фильтрование текстуры 9.2.4 Способы обертывания текстуры 9.2.5 Основные функции текстуры 9.2.6 Мультитекстурирование 9.2.7 Объединители текстуры 9.2.8 Текстурирование спрайта точки 9.2.9 Различия реализаций 9.3 Туман 9.4 Сглаживание 9.4.1 Сглаживание края 9.4.2 Мультивыборка 9.4.3 Другие способы сглаживания 9.5 Попиксельные тесты 9.5.1 Тест на отрезание 9.5.2 Альфа тест 9.5.3 Тест трафарета 9.5.4 Тест глубины 9.6 Применение фрагментов к буферу цвета 9.6.1 Смешивание 9.6.2 Возбуждение 9.6.3 Логические операции 9.6.4 Маскировка каналов буфера кадра

Глава 10. Разные функциональные возможности OpenGL ES 10.1 Операции с буфером кадра 10.1.1 Очистка буферов 10.1.2 Чтение “назад” буфера цвета 10.1.3 Сброс потока команд 10.2 Запросы состояний 10.2.1 Статические состояния 10.2.2 Запросы динамических состояний 10.3 Намеки 10.4 Расширения 10.4.1 Запросы расширений 10.4.2 Запрос матрицы 10.4.3 Патрица матриц 10.4.4 Рисование текстуры 10.4.5 Использование расширений

Глава 11. EGL 11.1 Краткий обзор программного API-интерфейса 11.2 Конфигурация 11.3 Поверхности 11.4 Контексты 11.5 Расширения 11.6 Рендеринг в текстуру 11.7 Написание высокопроизводительного кода EGL 11.8 Смешивание OpenGL ES- И 2D-рендерингов 11.8.1 Метод 1: Оконная поверхность - под управлением 11.8.2 Метод 2: PBUFFER-поверхности и растры 11.8.3 Метод 3: PIXMAP-поверхности 11.9 Оптимизация энергопотребления 11.9.1 Реализация управления питанием 11.9.2 Оптимизация в активном режиме 11.9.3 Оптимизация в режиме ожидания 11.9.4 Измерение энергопотребления 11.10 Пример выбора конфигурации EGL

Часть III. M3G

Глава 12. Введение в M3G 12.1 Обзор 12.1.1 Мобильная Java 12.1.2 Функциональные возможности и структура 12.1.3 Здравствуй, Мир 12.2 Принципы проектирования и соглашения 12.2.1 Уровень наивысшей абстракции 12.2.2 Никаких событий и обратных вызовов 12.2.3 Устойчивая к ошибкам арифметика 12.2.4 Содержательные названия методов 12.2.5 Передача параметров 12.2.6 Значения чисел 12.2.7 Перечислители 12.2.8 Обработка ошибок 12.3 M3G 1.1 12.3.1 Чистый 3D-рендеринг 12.3.2 Интерполяция вращения 12.3.3 Загрузка PNG и JPEG 12.3.4 Новые геттеры 12.3.5 Другие изменения

Глава 13. Базовые принципы M3G 13.1 Graphics3D 13.1.1 Цели рендеринга 13.1.2 Видовой порт 13.1.3 Рендеринг 13.1.4 Статические свойства 13.2 Image2D 13.3 Матрицы и преобразования 13.3.1 Класс Transform 13.3.2 Класс Transformable 13.4 Класс Object3D 13.4.1 Анимация 13.4.2 Выполнение итераций и клонирование 13.4.3 Теги и аннотации 13.5 Импорт контента 13.5.1 Класс Loader 13.5.2 Формат файла

Глава 14. Моделирование низкого уровня в M3G 14.1 Построение мешей 14.1.1 Массив вершин 14.1.2 Буфер вершин 14.1.3 Буфер индексов и примитивы рендеринга 14.1.4 Пример 14.2 Добавление цвета и света: внешность 14.2.1 Режим полигонов 14.2.2 Материал 14.2.3 2D-текстура 14.2.4 Туман 14.2.5 Режим смешивания 14.3 Источники света и камера 14.3.1 Камера 14.3.2 Источник света 14.4 2D-примитивы 14.4.1 Фон 14.4.2 3D-спрайт

Глава 15. Граф сцены в M3G 15.1 Основы графа сцены: Node(Узел), Group(Группа) и World(Мир) 15.2 Mesh-объекты 15.3 Преобразование объектов 15.3.1 Камера, источники света и видовые преобразования 15.3.2 Выравнивание узла 15.4 Эффекты со слоями и мульти-проходами 15.5 Выбор 15.6 Оптимизация производительности 15.6.1 Оптимизация видимости 15.6.2 Маски видимости

Глава 16. Анимация в M3G 16.1 Анимация по ключевым кадрам: Последовательность ключевых кадров 16.2 Цели анимации: дорожка анимации 16.3 Расчет времени и скорости: Контроллер анимации 16.4 Выполнение анимации 16.5 Продвинутая анимация 16.5.1 Деформируемые меши 16.5.2 Смешивание анимации 16.5.3 Создание разрывов 16.5.4 Динамическая анимация

Часть IV. Приложения

Приложение A. Математика фиксированной точки A.1 Методы с фиксированной точкой в языке C A.1.1 Базовые операции A.1.2 Общая экспонента A.1.3 Тригонометрические операции A.2 Методы фиксированной точки в языке Ассемблер A.3 Методы фиксированной точки в языке Java

Приложение B. Настройка производительности Java B.1 Виртуальные машины B.2 Оптимизация байт-кода B.3 Сборка мусора B.4 Доступ к памяти B.5 Вызовы методов

Приложение C. Глоссарий и библиография C.1 Глоссарий C.2 Библиография

Что потребуется для работы с книгой?

Чтобы опробовать методы, описанные в этой книге, разработчикам на языках C/C++ и Java, художникам, студентам, энтузиастам было бы неплохо иметь под рукой программируемый мобильный телефон.

Книга:

https://www.amazon.com/Mobile-3D-Graphics-Kaufmann-Computer/dp/0123737273

Загрузка кода примеров для этой книги:

Нет.

Загрузка цветных изображений для этой книги:

Нет.