Resources for the Mobile Developer Community
All Public API Implementations, Tutorials and Sample Code
Commercial and Open Source Implementations
ARM optimised implementations of OpenMAX DL
ARM provides hand optimised OpenMAX DL libraries for both the ARM11 and Cortex-A8 processor families. These are currently available free of charge and include functions for H.264 decode, MPEG-4 decode, AAC decode, MP3 decode, and FFTs. The latest release (23rd April 2008) adds functions for MPEG-4 decode and MP3 decode in addition to updating the previously released functions to the latest version of the OpenMAX DL specification (v1.0.2).
intent GamePlayer Application Development Kit with OpenKODE
The intent GamePlayer Application Development Kit (ADK) includes an implementation of OpenKODE with OpenGL ES and EGL. It enables true binary portability with full native speed execution across various operating system platforms, multiple CPU types including X86 and ARM and peripheral silicon support such as graphics acceleration. It also supports over-the-air deployment, even on "closed" platforms that are not normally capable of over-the-air deployment of native content.
OpenKODE 1.0 implementation from Acrodea
This package contains an implementation of OpenKODE Core as defined in the OpenKODE 1.0 specification. This release only contains the OpenKODE Core library, so in order to do anything useful with it you'll also need an implementation of EGL and some client APIs. The example source code provided assumes EGL and OpenGL ES headers and libraries are available.
OpenVG 1.0 Sample Implemenation
This sample reference implementation archive contains sources for OpenVG Reference Implementation, VGU and EGL 1.2. There's also a precompiled libOpenVG.dll that contains all the API implementations. This release is based on OpenVG 1.0.1 and EGL 1.2 specifications. This release is Windows-only, although the source code compiles at least on Mac OS X 10.4 and Cygwin. Project files are provided for MSVC 6.
C sample implementation of OpenMAX DL
ARM provides a sample OpenMAX DL implementation written in C. The OpenMAX DL (Development Layer) APIs contain a comprehensive set of audio, video, signal processing function primitives which can be implemented and optimized on various CPUs and hardware engines and then used for accelerated codec functionality. API functions target key algorithms in such codecs as H.264, MPEG-4, AAC, MP3, and JPEG. The function primitives are meant to cover the hotspots which typically take up 80% of codec processing. Codec porting to new hardware platforms can be as simple as swapping in the new DL library and recompiling.
OpenGL ES 1.1 SDK for Sony Ericsson phones UIQ 3-based phones
The OpenGL ES 1.1 SDK provides documentation, source code and utilities to take advantage of the the OpenGL ES graphics library on the P990, M600 and W950. The SDK is designed for usage with the UIQ 3 SDK and relevant Sony Ericsson extensions.
Nokia OpenGL ES 1.1 Plug-in for S60 3rd Edition SDK for Symbian OS, for C++
This early technology plug-in for the S60 3rd Edition SDK for Symbian OS, for C++, enables the development of OpenGL ES 1.1 applications for the Nokia N93 with hardware accelerated 3D graphics and OpenGL ES 1.1 support. The plug-in enables full use of the native 3D graphics features supported in the Nokia N93 and provides an OpenGL 1.1 ES features upgrade, from OpenGL ES 1.0, to the S60 emulator. This enables testing and debugging of OpenGL ES 1.1 compliant Symbian C++ applications without a device.
Bellagio open source OpenMAX IL sample implementation for Linux
Bellagio is an open source sample OpenMAX Integration Layer v.1.0 implementation for Linux. The project includes the libomxil shared library together with the OMX reference component, OMX alsa sink component, and OMX mp3 decoder component (requires ffmpeg and ffmpeg-devel libraries, not part of this package). Sample code is available
OpenML Open Source Reference Implementation SDK and Manuals
The OpenML 1.1 SDK implements the OpenML 1.0 Specification. The OpenML 1.1 SDK contains: executable libraries and utilities to enable OpenML applications to run on Linux, IRIX and Windows systems; source and header files for the libraries to enable new OpenML applications to be built; source code for example OpenML applications and audio and video device modules which can be used as a starting point for building commercial applications; and full documentation.
OpenGL ES 1.0 and OpenGL ES 1.1 PowerVR SDK
The PowerVR OpenGL ES SDKs provide a set of documentation, source code and tools that allows developers to create applications for the following development environments:
- TI OMAP2 Family - Symbian, Linux, Windows Mobile 5 Smartphone, Windows Mobile 5 PocketPC
- ARM VP- Symbian, Linux, WinCE 5
- Intel i2700G - Windows Mobile 2003 Pocket PC (Dell X50v & Dell X51v), Windows Mobile 5.0 Pocket PC (Dell X51v)
- Philips PNX4008 - Symbian UIQ3
- Freescale i.MX31 - Linux
- PC Emulation - Windows XP - OpenGL ES 1.X, Linux
OpenGL ES 1.1 Open Source implementation - the Vincent Rendering Library
Includes binaries, source, and OpenGL Redbook Samples converted to OpenGL ES, for the following development environment:
- PocketPC 2003
- Microsoft Smartphone 2003
OpenGL ES 1.0 Linux Sample Reference Implementation
Implements the OpenGL ES 1.0 Common and Common-Lite profiles using a desktop OpenGL 1.3+ implementation as a rasterizer. This is not a registered OpenGL ES implementation, but it has been tested against the the OpenGL ES conformance tests.
OpenGL ES 1.0 Extension for BREW SDK
This BREW SDK extension is for BREW developers who would like to utilize OpenGL ES 1.0 for their BREW application development.
Utilities & Projects
COLLADAloader
An open source application to load and visualize COLLADA files in real time using OpenGL. It uses FCOLLADA from Feeling Software to parse XML files.
COLLADA Refinery
COLLADA Refinery is a GUI-based application for creating content pipelines for 3D assets using modular components called conditioners.
Java Binding for the OpenGL ES API, JSR 239
Java Binding for the OpenGL ES API (JSR 239) enables access to the low level OpenGL ES 3D graphics library through a standard Java interface. This specification defines a Java ME optional package creating a standard Java interface into the OpenGL ES API and the EGL API for window system binding. JSR 239 requires an underlying native engine that has been certified by Khronos to be conformant with the OpenGL ES and EGL APIs. This engine must support version 1.0 of the OpenGL ES and EGL and all core extensions associated with those APIs. It may optionally support version 1.1 of the OpenGL ES and EGL APIs.
gDEBugger ES
gDEBugger ES is an OpenGL ES debugger which traces application activity on top of OpenGL ES to provide the application behavior information you need to find bugs and to optimize application performance. This new product brings all of gDEBugger's OpenGL debugging and profiling abilities to the OpenGL ES developer’s world. In addition gDEBugger ES acts as an emulator for OpenGL ES when working on Windows PC.
COLLADA RT Loader
The COLLADA RT Loader is a sample that was developed to load COLLADA document scene files, and render them using CG 1.5. It provides scene heirarchy, cameras, animation, and skinning support as well as basic COLLADA_FX rendering with the assistance of the COLLADA_FX lib. Currently COLLADA_RT only loads COLLADA 1.40 files and has been tested some though not in a rigorous fashion. It is a sample COLLADA loader / render implementation in OpenGL and is not a reference viewer; meaning it is not and isn't intended to support everything that COLLADA can represent. The loader uses the COLLADA DOM for importing the raw COLLADA data and refactors it into renderable data at run-time when a file is loaded.
COLLADA FX Loader
The COLLADA FX Loader project is a sample that was developed to load a basic COLLADA FX document, and to make all of the calls to the Cg / CgGL runtime to create and initialize the materials and effects defined in COLLADA. It also provides an API to apply those effects through calls to set and reset the pass state of an effect. The framework is easily extensible to add implementation for any types or states that are needed and currently unsupported. The sources for the COLLADA FX loader build into a library called libcfx.a that must be linked into the application. The loader uses the COLLADA DOM when loading assets directly out of COLLADA, or the effects and materials can be converted into a binary format native to libcfx.
GLUT|ES - The OpenGL ES Utility Toolkit
GLUT|ES is a port of the OpenSource freeglut implementation for WinCE and Win32 systems based on OpenGL ES. Most of GLUT API v.3 functionnalities are present: window creation, callbacks, menus, timers etc. Only functions that cannot exist with OpenGL ES or are not pertinent have not been ported (like overlays, joysticks on PocketPC, etc). It has been compiled, linked and tested successfully with Hybrid Rasteroid, Vincent and Intel 2700G implementations of OpenGL ES 1.1. It is compatible with both OpenGL|ES Common Light (CL) and Common (CM) profiles.
Tutorials, Technical Whitepapers and How to Guides
Developing Web Applications with COLLADA and X3D
COLLADA and X3D are two royalty-free open standards that use XML schema technology to represent 3D content. This whitepaper will assist developers in understanding the similarities and differences between COLLADA and X3D, the design goals that informed their development, and how and where the two standards can be used together as a powerful tool set for developing Web and enterprise applications.
OpenGL ES tutorial on Windows CE (Chinese)
A series of articles on how progamming OpenGL ES on Windows CE, from initialization to use model exported from modeling tool. Articles are written in Chinese.
Skeletal bone animation and skinning with COLLADA models in XNA
This comprehensive XNA tutorial explains how to do skeletal bone animation and skinning using COLLADA models, which allow for complex animations exported as XML that DirectX .X files can't handle.
OpenKODE for mobile gaming
This article from the Tao Group clearly explains the problems that OpenKODE is designed to address, how it creates a consistent platform for development, how it can also accelerate Java-based applications, and how it defines a distribution format.
COLLADA Getting Started Guide
A basic summary of resources and steps for getting started using COLLADA as a digital content creator or as a software developers. The guide the steps to take if you want to use COLLADA to import/export data from tools or if you want to implement COLLADA in your application.
Optimizing OpenGL ES applications for Brew
Although OpenGL ES makes 3D graphics programming significantly easier and more portable, developers must still work to tune their applications for the greatest performance possible. This article features tips and tricks gleaned from Qualcomm and other developers at the 2006 Brew Developer Conference in San Diego.
OpenGL ES Win32 CE API Programming for Windows Mobile 5.0 Smartphone using Pelles C
This tutorial details the basics of Win32 CE API programming for the Windows Mobile 5.0 Smartphone using Pelles C. This tutorial uses ANSI C language and Pelles C Compiler. The basics of setting up OpenGL ES are covered. You should at least have a basic working knowledge of console C before starting.
OpenGL S 1.1 tutorials for Sony Ericsson UIQ 3-based phones
The OpenGL ES tutorials included in the Sony Ericsson SDK for UIQ 3-based phones helps developers get started using the OpenGL ES 1.1 API, taking developers through initialization, how to render a triangle, 3D drawing, basic Texturing, Transform and Lighting, loading of textures and printing text on the screen, and handling optimized geometry including animations.
Bellagio OpenMAX IL component writers’ guide
This guide aims at explaining how OpenMAX IL components can be built in C based on the Bellagio open source distribution.
3D Graphics Made Easier with OpenGL ES for BREW
This article describes how to get your environment set up for OpenGL ES development in BREW, as well as introduces you to the basic concepts you need in order to get started.
25 OpenGL ES tutorials using GLUT|ES by ZeusCMD
This set of tutorials teaches you how to create OpenGL ES applications on Windows and Pocket PC. The tutorials guide the programmer through a set of techniques, each one becoming progressively more advanced. Topics include: Setting Up Your Environment, Creating an OpenGL Window, Keyboard and Mouse Input, Rendering, Orthographic and Perspective Projection, Color and Shading, Transformations, Depth, 3D Objects, Backface culling, Lighting, Texture Mapping, Blending, Fog, Masking, Image Loading, and Stencil Buffering.
Available online or as a .zip collection
7 OpenGL ES Tutorials for Win32/WinCE from TyphoonLabs
This set of 7 tutorials (available as a .zip collection) covers the basic setup and usage of OpenGL ES with mobile devices. All tutorials can be compiled and tested on the Pocket PC profile, but only few modifications are needed to get an executable version for Smartphones. Topics include: Win32/WinCE and OpenGL ES Initialization, 3D shapes, perspective and pointer clicks management, Texturing, Lighting and Fog, Blending and bitmapped fonts, Particles using Point Sprites, and Using Vertex Buffer Objects. In English and Spanish. (Entry from the 2005 OpenGL ES Coding Challenge)
Tech Talks and BOF presentations from SIGGRAPH 2006
PPT presentations from the OpenGL ES, OpenVG, OpenKODE and COLLADA Tech Talks and BOFs at SIGGRAPH 2006.
Integration of OpenMAX IL 1.0 components within the Symbian OS Media Device Framework (MDF)
This whitepaper shows how the OpenMAX Integration Layer (OpenMAX IL) API can be used within the Symbian Media Device Framework to enable access to multimedia acceleration on Symbian OS Devices. It is geared towards system integrators who will integrate OpenMAX IL codecs into the Symbian OS platform.
OpenMAX IL - Microsoft DirectShow Filter Integration
This whitepaper briefly describes how the Microsoft DirectShow Filter interface may be translated to the OpenMAX IL base profile interface for integration with Microsoft Windows Mobile Enabled devices with a pull and a push communication model.
Using OpenMAX Integration Layer with GStreamer
This whitepaper shows how the OpenMAX Integration Layer API can be used in the Linux GStreamer framework to enable access to multimedia components, including HW acceleration on platforms that provide it.
Graphics Rendering with OpenGL ES - GDC 2006 presentations
PPT presentations from the day-long OpenGL ES tutorial on March 21st at Game Developers Conference 2006.
Getting Started with Rasteroid OpenGL ES for Pocket PC using Pelles C
Simple tutorial on compiling the Rasteroids sample code using Pelles C to run on Pocket PC
OpenML 1.0 Whitepaper - updated Apr 2004 (.PDF, 848 K)
A description of the motiviation for developing OpenML, the basic architecture of OpenML, and application profiles.
Programming OpenGL ES 1.0 in a BREW Environment (pdf)
This document provides game developers with an overview of the steps needed to build an run BREW OpenGL ES 1.0 applications. Included is an explanation of how to use the ATI IMAGEON 2300 series hardware with the BREW Software Development Kit (SDK).
OpenML 1.0 Media Library Software Development Kit Beginner’s Guide
This guide is a quick introduction to the OpenML Media Library Software Development Kit (ML). If you are new to ML, you should read this guide and browse the online example programs. The material in this guide assumes that ML is installed on your workstation, and that you have access to the online ML example programs.
An Introduction to BREW and OpenGL ES
This article will go from installing and setting up a BREW development environment and emulator, through to getting an OpenGL ES system up and running and displaying a single triangle.
Books
Mobile 3D Graphics
Mobile 3D Graphics offers an in-depth look at OpenGL ES and teaches fundamental 3D mobile graphics programming with standard APIs. It covers the basic and advanced application program interfaces behind the major wireless and mobile devices supporting 3D graphics applications. It includes: a comprehensive explanation of 3D mobile graphics programming; an extensive range of OpenGL ES code samples; and examples of combining 3D and 2D mobile graphics methods.
COLLADA: Sailing the Gulf of 3D Digital Content Creation book
This book explains in detail how to use the COLLADA technology in a project utilizing 3D assets, and ultimately how to create an effective content creation pipeline for the most complex development.
It was created as a guide to the COLLADA 1.4 specification with the goal of providing readers with all the information that will help them understand the concepts, learn how the technology is already implemented by various tools, and provide guidance for using COLLADA in their applications.
The book will be useful for content developers interested in exchanging data between several tools, application developers planning to take advantage of COLLADA in their tool chain and tool providers wanting to add COLLADA compatibility.
OpenGL ES Game Development
An in-depth look into the OpenGL ES standard and what the new embedded systems graphics library will provide for game developers. It covers OpenGL ES, EGL, game development, and platforms that are currently available. It also covers the problems involved in mobile game development with OpenGL ES and includes an overview of fixed point math and other areas of cell phone limitations that must be considered before creating mobile games.
Advanced Graphics Programming Using OpenGL
This book is about graphics techniques that dont require esoteric hardware or custom graphics libraries, and that are written in a comprehensible style and do useful things. It is relevant to both OpenGL and OpenGL ES. Sophisticated and novel programming techniques are implemented in C using the OpenGL library, including: coverage of color and lighting; texture mapping; blending and compositing; antialiasing; image processing; special effects; natural phenomena; artistic and non-photorealistic techniques, and many others.
Example Code
PowerVR SDK example programs
Collection of example programs with source code illustrating: a Matrix Skinned Character in combination with DOT3 Per Pixel Lighting; Morphing in combination with multi-texturing; different primitive types; a model being lit with 8 point lights at high performance; cell-shading (a.k.a. Toon shading) effects applied on an animated model; performance increase when using optimized indexed triangle lists; particle effects with frame buffer blending; spherical harmonics and regular diffuse vertex lighting; PolyBump technology developed by Crytek to enhance 3D-rendering quality without increasing the overhead in real-time rendering; various shadow techniques; different texture filter modes; how to use user clip planes; and a transparent vase with dynamic reflections on its metallic sections.
San Angeles Observation (396 KB)
OpenGL ES 1.1 port of the small desktop OpenGL self-running demonstration, although it still contains over 60000 faces. This framework compiles for both desktop and PocketPC Win32 environment, and a separate source is included for Linux with X11. (Entry from the 2005 OpenGL ES Coding Challenge) BSD or GNU LGPL license.
RollerCoaster2005 (780 KB)
When launched, the OpenGL ES 1.1 program first dynamically generates all the vertices of the track for a few second. Then the animation starts with a first turn around the coaster, a fade in/fade out, and the ride starts. (Entry from the 2005 OpenGL ES Coding Challenge) GNU GPL license.
JellyFish from Outer Space (5.3 MB)
An OpenGL ES 1.1 mobile device recreation of the classic Space Invaders game, but is completely in 3D. You can look at the invading creatures from underneath, from above or from the side. (Entry from the 2005 OpenGL ES Coding Challenge) GNU GPL license.
Dancing Flora (5.8 MB)
A self-running demo that can drive 3D flowers to dynamically dance with music. It is implemented with OpenGL ES 1.1 on Windows 2000/XP with pure C/C++. (Entry from the 2005 OpenGL ES Coding Challenge) GNU LGPL license.
Wake Breaker water racing game (600 KB)
An OpenGL ES 1.1 high speed water race between you and the computer through a beautiful ocean environment with caustics. The boats pound the water behind them as they speed, through the randomly generated courses. (Entry from the 2005 OpenGL ES Coding Challenge) BSD license.
glEffects (9.3 MB)
Windows application demonstrates several 2D visual effects using OpenGL ES functions. (Entry from the 2005 OpenGL ES Coding Challenge) GNU GPL license.
OpenGL ES 1.0 and 1.0 demos with source code from PowerVR
The OpenGL ES SDK contains a variety of technology demos whose aim is to demonstrate a particular feature of the hardware or software API. Each demo is provided with an executable and associated source code. Includes matrix skinned characters, DOT 3 per pixel lighting, morphing with multitexturing, toon shading, particle effects, polybump technology, skybox, texture filters, dynamic reflections, and more.





