1. Introduction to OpenGL ES 3.0
OpenGL ES 3.0 and Backward Compatibility
Programming with OpenGL ES 3.0
2. Hello Triangle: An OpenGL ES 3.0 Example
Where to Download the Examples
Using the OpenGL ES 3.0 Framework
Creating a Simple Vertex and Fragment Shader
Compiling and Loading the Shaders
Creating a Program Object and Linking the Shaders
Setting the Viewport and Clearing the Color Buffer
Loading the Geometry and Drawing a Primitive
Communicating with the Windowing System
Determining the Available Surface Configurations
Letting EGL Choose the Configuration
Creating an On-Screen Rendering Area: The EGL Window
Creating an Off-Screen Rendering Area: EGL Pbuffers
Putting All Our EGL Knowledge Together
Creating and Compiling a Shader
Creating and Linking a Program
Getting and Setting Attributes
OpenGL ES Shading Language Basics
Vertex and Fragment Shader Inputs/Outputs
Uniform and Interpolator Packing
6. Vertex Attributes, Vertex Arrays, and Buffer Objects
Specifying Vertex Attribute Data
Declaring Vertex Attribute Variables in a Vertex Shader
Binding Vertex Attributes to Attribute Variables in a Vertex Shader
7. Primitive Assembly and Rasterization
Vertex Shader Built-In Variables
Number of Uniforms Limitations in a Vertex Shader
Generating Texture Coordinates
OpenGL ES 1.1 Vertex Pipeline as an ES 3.0 Vertex Shader
Texture Objects and Loading Textures
Texture Filtering and Mipmapping
Depth Texture Compare (Percentage Closest Filtering)
Example of Using a Cubemap Texture
Loading 3D Textures and 2D Texture Arrays
Texture Subimage Specification
Copying Texture Data from the Color Buffer
Fixed-Function Fragment Shaders
Implementing Fixed-Function Techniques Using Shaders
Using Masks to Control Writing to Framebuffers
Reading and Writing Pixels to the Framebuffer
Framebuffer and Renderbuffer Objects
Choosing a Renderbuffer Versus a Texture as a Framebuffer Attachment
Framebuffer Objects Versus EGL Surfaces
Creating Framebuffer and Renderbuffer Objects
Attaching a Renderbuffer as a Framebuffer Attachment
Attaching a 2D Texture as a Framebuffer Attachment
Attaching an Image of a 3D Texture as a Framebuffer Attachment
Checking for Framebuffer Completeness
Deleting Framebuffer and Renderbuffer Objects
Deleting Renderbuffer Objects That Are Used as Framebuffer Attachments
Reading Pixels and Framebuffer Objects
Creating and Deleting a Sync Object
Waiting for and Signaling a Sync Object
14. Advanced Programming with OpenGL ES 3.0
Particle System with Point Sprites
Particle System Fragment Shader
Particle System Using Transform Feedback
Particle System Rendering Algorithm
Particle Emission with Transform Feedback
Matrices for Projective Texturing
Anti-Aliasing of Procedural Textures
Further Reading on Procedural Textures
Rendering Terrain with Vertex Texture Fetch
Generating a Square Terrain Grid
Computing Vertex Normal and Fetching Height Value in Vertex Shader
Further Reading on Large Terrain Rendering
Rendering from the Light Position Into a Depth Texture
Rendering from the Eye Position with the Depth Texture
OpenGL ES 3.0 Implementation String Queries
Querying Implementation-Dependent Limits
Nonprogrammable Operations Control and Queries
Shader and Program State Queries
Renderbuffer and Framebuffer State Queries
Building for Microsoft Windows with Visual Studio
Building for Android 4.3+ NDK (C++)
Building the Example Code with Android NDK
Building for Android 4.3+ SDK (Java)
Building the Example Code with Xcode 5
Converting a Float to a Half-Float
Angle and Trigonometry Functions