S60 3rd Edition SDK for Symbian OS
Example Applications Guide

OpenGL ES Simple Light Example

1. About this Example
2. Prerequisites
3. Design and Implementation


1. About this Example

This example demonstrates the use of materials and lighting in OpenGL ES. The example consists of two different lights, a lamp and a spotlight. The example also consists of two different objects, a duck and a head. All the object geometries are defined in files duck.h and head.h. Both objects have different materials. The user can change the setup by accessing the menu by pressing the left software button.

This example can be extended to any kind of OpenGL ES application, but you might want to look at the other example applications as well for how to use other, different kinds of, OpenGL ES features.

Only classes used by this example are the basic UI framework baseclasses. Open GL ES itself is pure C method call API and doesn't use classes.


2. Prerequisites

To build and run this example you need to have the S60 SDK installed and working correctly on your computer. You also need basic understanding on how to build S60 applications.

To work with this example application you need basic understanding on how to build S60 applications and basic undestanding of how Symbian (or COE) UI and application framework works. Also basic knowledge on OpenGL or OpenGL ES is required if you wish to modify the example.


3. Design and Implementation

In Series 60, OpenGL ES can have up to eight different light sources at a time, from GL_LIGHT0 to GL_LIGHT7. These can each be separately enabled and disabled. Each light can have the following properties defined: diffuse, ambient, specular, and position. In addition to these, a spotlight can have its direction, exponent, cut-off values, and three different attenuation values defined.

In order for the lights to actually work, the object material needs to be defined. For that, the calculation of object normals is needed. The normals need to be unit-length for the calculations, so the automatic normalization of the normals is enabled in the example to make sure of this. Enabling the autonormalize slows down the renderer handling a bit. This can be avoided by using fixed-point values and by normalizing the normals beforehand.

Also objects can have different material definitions. Setting of the object material is much like setting up the lighting. The object’s ambient, diffuse, specular colors, the shininess, and the color of any emitted light can be set.

3.1 Capabilities

The application has capability NONE as it only needs the rights to execute and access to the screen.

3.2 ScalableUI

All Open GL ES examples support various screen modes. The examples also support changing the screen size while the application is running.


This inheritance list is sorted roughly, but not completely, alphabetically:


© Nokia 2006

Back to top