Android OpenGL® ES 3.0 & 3.1 Tutorials

OpenGL® ES 3.0

Starting out with Open GL ES 3.0
Getting the most out of OpenGL ES 3.0
Behind the pixels: Arm Mali graphics Demos

OpenGL® ES 3.1

OpenGL ES 3.1 and the Android Extension Pack
OpenGL ES 3.1 tutorial
OpenGL ES 3.1: introduction to Compute Shaders 

OpenGL ES 3.0

Starting out with OpenGL ES 3.0

Dave Shriener and Jon Kirkham, Arm

This presentation shows how OpenGL ES 3.0 builds on OpenGL ES 2.0 to provide new and easier ways to develop games for mobile devices. It introduces some of those features and explains what they can be used for and how to use them. Sample code for all the features demonstrated are also available in the Mali OpenGL ES SDK.

Getting the most out of OpenGL ES 3.0

Daniele Di Donato, Tom Olson, and Dave Shreiner, Arm

OpenGL ES provides a rich set of tools for creating beautiful, high-performance graphics on mobile devices. Here we describe some of those features and show how to use them in a mobile context. We present case studies and demonstrations showing how new technologies like ASTC can provide dramatic power and bandwidth savings, and even enable new approaches to classic rendering problems.

OpenGL ES 3.1

OpenGL ES 3.1 and the Android Extension Pack

Hans-Kristian Arntzen, Software Engineer, Arm
Tom Olson, Director, Graphics Research, Arm

OpenGL ES 3.1 provides a rich set of tools for creating stunning images. This talk will cover best practices for using advanced features of OpenGL ES 3.1 on Arm Mali GPUs, using recently developed examples from the Mali SDK. We’ll also look at some of the extended functionality available in Android L with the Android Extension Pack, and present best practices for using advanced features such as tessellation and ASTC texture compression on mobile platforms. Finally, we’ll look at how mobile graphics APIs are evolving and what the future might hold.

Watch the video

OpenGL ES 3.1 Tutorial

Hans-Kristian Arntzen, Graduate Engineer, Arm

OpenGL ES is the world’s most deployed 3D graphics API and the latest version, OpenGL ES 3.1, was announced in March 2014. This talk covers best practices when using the headline OpenGL ES 3.1 features including: compute shaders, which allow the GPU to be used for general-purpose computing, tightly coupled with GPU-based graphics rendering; indirect drawing commands, which allow the GPU to read drawing command parameters from memory instead of receiving them directly from the CPU; and the Shader Storage Buffer Object (SSBO) feature that gives additional possibilities for exchanging data between pipeline stages, as well as being flexible input and output for compute shaders.

OpenGL ES 3.1: Introduction to Compute Shaders

Roberto Lopez-Mendez, Senior Software Engineer, Arm

This tutorial will give you an introduction to compute shaders in OpenGL ES 3.1, how they fit into the rest of OpenGL ES and how you can make use of it in your application. Using compute shaders effectively requires a new mindset where parallel computation is exposed more explicitly to developers. With this explicitness, various new primitives are introduced which allows compute shader threads to share access to memory and synchronize execution.


This tutorial does not include a particular code sample outside the snippets provided here. See the OpenGL ES 3.1 samples for more in-depth compute shader sample code. It is intended to be read before digging deep into the more involved compute shader samples.