Articles on OpenGL ES Development for Android and Linux
I wrote some articles in 2008-2009 to help developers get started using OpenGL ES on the TI OMAP platform which uses PowerVR GPU cores. This first article is still one of the few introductions to the PowerVR SDK available today and it is still useful for anyone developing for any PowerVR platform. This was the basis of a series of workshops I taught on OpenGL ES development for OMAP for the BeagleBoard project. The PowerVR SGX cores are still the most widely used GPU cores in the world today. They are in all Apple mobile devices, Amazon Kindle Fire, Nook, Samsung, Palm, Garmin and other devices with the OMAP or Intel Atom processors.
This next article is an in-depth look at how to use PixelBuffers and Frame Buffer Objects in OpenGL ES 1.1 and 2.0. This includes complete example source code that can be used on any PowerVR device. This is a great resource for anyone trying to understand how and why to use FBOs.
For the past two years I have been working with OpenGL ES 2.0 mainly on Android. It’s absolutely stunning how incomplete Google’s documentation and examples are for OpenGL ES, particularly for 2.0. They rely heavily on the Khronos specifications, but those documents are so general that many features just don’t work on Android the way developers expect, particularly in the EGL area. The result is that there are a lot of undocumented pitfalls to using OpenGL ES on Android and you can see this in the volume of questions on the topic at StackOverflow, for example. So, when Intel asked me to write these articles for the Intel Developer Zone in 2012, I tried to cover as many of these issues as I could. This article still provides some of the most in-depth coverage of how to get started with OpenGL ES development on Android and avoid some of the major pitfalls. The title is misleading because it’s really useful for anyone doing OpenGL ES development on any Android platform and not just for porting games to Intel’s Atom.
OpenGL ES is useful for so much more than just games! It’s probably the most under-utilized feature of the major embedded system-on-chip solutions today. I have been fortunate to redesign some legacy 2D GUI systems in audio/video control and digital signage applications recently and it has been stunning how much value was added by combining OpenGL ES with legacy 2D APIs properly. The problem is, there are some little-known extensions to OpenGL ES that are essential to do this and the degree to which they are supported on various GPU platforms varies wildly. This next article describes how to use important EGL extensions which are almost completely undocumented for embedded Linux and Android platforms. The EGL Image extensions enable OpenGL ES to be combined with accelerated 2D graphics APIs and video in very powerful ways.
Google’s decision to release the NDK for Android has caused an explosion in the game engine middleware solutions available for Android as many solutions are being ported from Windows and OS X. There are so many choices available today that it is very time consuming to research them all, but this decision is critical to create any new graphics-intensive app for Android. So, I just completed a new two-part article for Intel which provides a comprehensive list of the many options available and gives enough introduction on each to help developers decide where to start. Again, this article is not specific to Intel Atom.