Pin Me

Developing in Android with OpenGL

written by: Jbeerdev•edited by: Simon Hill•updated: 7/1/2010

The Google Android platform supports OpenGL ES 1.0 (and some functionality of versions 1.1). OpenGL is a graphic library focused on 3D graphics.

  • slide 1 of 4

    In this article, we will introduce a bit about OpenGL and its integration in Android. Let's talk about OpenGL.

    OpenGL, as I mentioned before, is a graphics library that helps us to create 2D and 3D environments. This library, opposite to Direct3D from Microsoft, is multiplatform, in that you can create applications that use OpenGL in a GNU/Linux system and in a Windows one.

    In mobile devices we have a reduced version: OpenGL ES. It has less functionality that OpenGL (without ES) and it's adapted to small devices with their limitations. In an Android phone we don't have great graphics cards, so resources and implementation have to be optimized if we want to achieve good results.

    On the Khronos page we can find a lot of information about this technology.

    http://www.khronos.org/opengles/

  • slide 2 of 4

    OpenGL ES in Android

    Android currently supports OpenGL ES 1.0, which corresponds to OpenGL 1.3 on a desktop system. The API we use to develop in Android is very similar to the J2ME OpenGL ES API (JSR 239). The OpenGL ES libraries and functionality can be found in the following packages:

    javax.microedition.khronos.opengles

    javax.microedition.khronos.egl

    android.opengl

    How to use the API

    When I work with OpengGL I always use a “template" get from Android OpenGL examples. It's a pseudo API that helps me to forget about how Android handles OpenGL and focus on implementation.

    One of the main classes to handle OpenGL is GLSurfaceView

    http://developer.android.com/guide/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceView.html

    Then we have to create a class that implements the interface GLSurfaceView.Renderer. In further lessons I will explain a bit deeper about this class, for now, we need to know that:

    • In this class we initialize and specify the parameters of the OpenGL environment.
    • Here is the “draw" method. This function is always drawing, so code we put inside will be constantly drawn on the screen. If we are drawing a cube that moves on the screen, this is the place to put the routines that are going to drive the cube movement.
    • Another interesting method is the “surfaceCreated" method. This is called the first time the application is launched. Here we define the parameters of the OpenGL that are going to be rules, we can always create another class to load Textures.

  • slide 3 of 4

    Some Terminology

    Talking this way about OpenGL and Android could be a bit shocking for people with no idea of what OpenGL is. To make things easier to understand, let's define some terms to clarify these ideas.

    SurfaceView: Provides a dedicated drawing surface embedded inside of a view hierarchy. With this we can create OpenGL objects over views and layouts. This is like the canvas we are going to use to draw our OpenGL environment.

    SurfaceHolder: A client may implement this interface to receive information about changes to the surface.

    GL10: Its an interface that implements the GL “object". We will use this GL object to work with the OpenGL routines.

    Textures: The textures are images we can add to a OpenGL object.

  • slide 4 of 4

    Follow up

    If you want to know when new articles are released, subscribe yourself to the Google Android RSS Otherwise, you can follow my research, articles and work in my professional twitter: jbeerdev