OpenGL ES – это ведущий интерфейс и графическая библиотека для рендеринга сложной трехмерной графики на мобильных устройствах. Последняя версия, OpenGL ES 3.0, делает возможным создания потрясающей графики для новых игр и приложений, не влияя на производительность устройства и время работы аккумулятора. Авторы рассматривает весь API и язык для написания шейдеров. Они внимательно рассматривают возможности OpenGL ES 3.0, такие как теневые карты, дублирование геометрии, рендеринг в несколько текстур, uniform-буфера, сжатие текстур, бинарное представление программ и преобразование обратной связи. При помощи детальных, скачиваемых примеров на С, вы узнаете как задавать и программировать каждый аспект графического конвейера. Шаг за шагом, вы перейдете от вводных примеров к продвинутому попиксельному освещению и системам частиц. В книге вы найдете содержательные советы по оптимизации быстродействия, максимизации эффективности работы API и GPU и полном использовании OpenGL ES 3.0 в широком спектре приложений. Весь код был собран и проверен на iOS 7, Android 4.3, Windows (эмуляция OpenGL ES 3.0) и Ubuntu Linux и авторы показывают как собрать примеры для каждой платформы. Рассматриваются следующие темы: • использование EGL API для взаимодействия с оконной системой, выбора конфигурации и создания контекста для рендеринга и поверхностей; • шейдеры, создание и подключение объектов-шейдеров, компиляция шейдеров, проверка на ошибки компиляции, создание, сборка и опрос состояния для объектов-программ и использование шейдеров в виде исходных текстов и в бинарной форме; • язык для написания шейдеров OpenGL ES: переменные, типы, конструкторы, структуры, массивы, атрибуты, uniform-блоки, входные и выходные переменные, описатели точности и инвариантности; • геометрия, вершины и примитивы, передача геометрии в конвейер и сборка из нее примитивов; • создание двухмерных, трехмерных, кубических текстур и массивов текстур, их загрузка и использование при рендеринге, режимы отсечения текстурных координат, фильтрация и форматы текстур, сжатые текстуры, объекты-сэмплеры, неизменяемые текстуры, буфера для распаковки пикселов и пирамидальное фильтрование; • фрагментные шейдеры: мультитекстурирование, туман, альфа-тест и задаваемые пользователем плоскости отсечения; • фрагментные операции: отсечение по прямоугольной области, тесты трафарета и глубины, мультисэмплинг, смешивание цветов и растрирование; • объекты-фреймбуферы: рендеринг во внеэкранные поверхности для продвинутых эффектов; • продвинутый рендеринг: попиксельное освещение, имитация отражения окружающей среды, системы частиц, постобработка изображений, процедурные текстуры, теневые карты, ландшафт и проективное текстурирование; • объекты синхронизации и барьеры: синхронизация с приложением и выполднением на GPU.
OpenGL ES eto vedushchiy interfeys i graficheskaya biblioteka dlya renderinga slozhnoy trekhmernoy grafiki na mobilnykh ustroystvakh. Poslednyaya versiya, OpenGL ES 3.0, delaet vozmozhnym sozdaniya potryasayushchey grafiki dlya novykh igr i prilozheniy, ne vliyaya na proizvoditelnost ustroystva i vremya raboty akkumulyatora. Avtory rassmatrivaet ves API i yazyk dlya napisaniya sheyderov. Oni vnimatelno rassmatrivayut vozmozhnosti OpenGL ES 3.0, takie kak tenevye karty, dublirovanie geometrii, rendering v neskolko tekstur, uniform-bufera, szhatie tekstur, binarnoe predstavlenie programm i preobrazovanie obratnoy svyazi. Pri pomoshchi detalnykh, skachivaemykh primerov na S, vy uznaete kak zadavat i programmirovat kazhdyy aspekt graficheskogo konveyera. SHag za shagom, vy pereydete ot vvodnykh primerov k prodvinutomu popikselnomu osveshcheniyu i sistemam chastits. V knige vy naydete soderzhatelnye sovety po optimizatsii bystrodeystviya, maksimizatsii effektivnosti raboty API i GPU i polnom ispolzovanii OpenGL ES 3.0 v shirokom spektre prilozheniy. Ves kod byl sobran i proveren na iOS 7, Android 4.3, Windows (emulyatsiya OpenGL ES 3.0) i Ubuntu Linux i avtory pokazyvayut kak sobrat primery dlya kazhdoy platformy. Rassmatrivayutsya sleduyushchie temy: ispolzovanie EGL API dlya vzaimodeystviya s okonnoy sistemoy, vybora konfiguratsii i sozdaniya konteksta dlya renderinga i poverkhnostey; sheydery, sozdanie i podklyuchenie obektov-sheyderov, kompilyatsiya sheyderov, proverka na oshibki kompilyatsii, sozdanie, sborka i opros sostoyaniya dlya obektov-programm i ispolzovanie sheyderov v vide iskhodnykh tekstov i v binarnoy forme; yazyk dlya napisaniya sheyderov OpenGL ES: peremennye, tipy, konstruktory, struktury, massivy, atributy, uniform-bloki, vkhodnye i vykhodnye peremennye, opisateli tochnosti i invariantnosti; geometriya, vershiny i primitivy, peredacha geometrii v konveyer i sborka iz nee primitivov; sozdanie dvukhmernykh, trekhmernykh, kubicheskikh tekstur i massivov tekstur, ikh zagruzka i ispolzovanie pri renderinge, rezhimy otsecheniya teksturnykh koordinat, filtratsiya i formaty tekstur, szhatye tekstury, obekty-semplery, neizmenyaemye tekstury, bufera dlya raspakovki pikselov i piramidalnoe filtrovanie; fragmentnye sheydery: multiteksturirovanie, tuman, alfa-test i zadavaemye polzovatelem ploskosti otsecheniya; fragmentnye operatsii: otsechenie po pryamougolnoy oblasti, testy trafareta i glubiny, multisempling, smeshivanie tsvetov i rastrirovanie; obekty-freymbufery: rendering vo vneekrannye poverkhnosti dlya prodvinutykh effektov; prodvinutyy rendering: popikselnoe osveshchenie, imitatsiya otrazheniya okruzhayushchey sredy, sistemy chastits, postobrabotka izobrazheniy, protsedurnye tekstury, tenevye karty, landshaft i proektivnoe teksturirovanie; obekty sinkhronizatsii i barery: sinkhronizatsiya s prilozheniem i vypoldneniem na GPU.
OpenGL ES is a leading interface and graphics library for rendering complex three-dimensional graphics on mobile devices. The latest version, OpenGL ES 3.0, makes it possible to create stunning graphics for new games and applications without affecting device performance and battery life.
The authors consider the whole API and a language for writing shaders. They are carefully considering the features of OpenGL ES 3.0 such as shadow maps, duplicate geometry, rendering to multiple textures, uniform buffer, texture compression, binary representation of programs and transform feedback.
With detailed, downloadable examples, you'll learn how to set up and program every aspect of the graphics pipeline. Step by step, you'll go from basic examples to advanced per-pixel lighting and particle systems. In the book you'll find insightful tips for optimizing performance, maximizing the efficiency of API and GPU and full use of OpenGL ES 3.0 in a wide variety of applications.
All code was compiled and tested on iOS 7, Android 4.3, Windows (OpenGL ES 3.0 emulation), and Ubuntu Linux, and the authors show how to collect examples for each platform.
Covers the following topics:
- use the EGL API to interact with the windowing system, choosing configurations, and creating rendering context and surfaces;
- shaders, the creation and connection of objects, shaders, compiling shaders, checking for compile errors; creating, assembling and survey the status of objects and the use of shaders in source and binary form;
- a language for writing shaders for OpenGL ES: variables, types, constructors, structures, arrays, attributes, uniform blocks, input and output variables the descriptors of the precision and invariance;
- geometry, vertices, and primitives, transfer of geometry to the pipeline and build it from primitives;
- create two-dimensional, three-dimensional, cubic textures and texture arrays, download them and use when rendering modes clipping texture coordinates, filtering, and formats of textures, compressed textures, objects, samplers, invariant texture buffer to decompress the pixels, and pyramidal filtering.
- fragment shaders: multitexturing, fog, alpha test, and user-defined clipping plane;
- slice operation: trimming a rectangular area of the stencil tests and depth, multisampling, blending, and rasterization;
objects - the frame buffers: rendering into offscreen surfaces for advanced effects;
- advanced rendering: per-pixel lighting, the simulated reflection of the environment, particle systems, post-processing images, procedural textures, shadow maps, terrain, and projective texturing;
- synchronization objects and barriers: synchronize with the application and vypolneniem on the GPU.