------------------------------------------------------------------------ | |
San Angeles Observation OpenGL ES version example | |
Copyright 2004-2005 Jetro Lauha | |
Web: http://iki.fi/jetro/ | |
See file license.txt for licensing information. | |
------------------------------------------------------------------------ | |
This is an OpenGL ES port of the small self-running demonstration | |
called "San Angeles Observation", which was first presented in the | |
Assembly'2004 event. It won the first place in the 4 KB intro | |
competition category. | |
The demonstration features a sightseeing of a futuristic city | |
having many different kind of buildings and items. Everything is | |
flat shaded with three different lights. | |
The original version was made for desktop with OpenGL. It was | |
naturally heavily size optimized in order to fit it in the size | |
limit. For this OpenGL ES version example much of the code is | |
cleaned up and the sound is removed. Also detail level is lowered, | |
although it still contains over 60000 faces. | |
The Win32 (2000/XP) binary package of original version is | |
available from this address: http://jet.ro/files/angeles.zip | |
First version of this OpenGL ES port was submitted to the Khronos | |
OpenGL ES Coding Challenge held in 2004-2005. | |
As a code example, this source shows the following: | |
* How to create a minimal and portable ad hoc framework | |
for small testing/demonstration programs. This framework | |
compiles for both desktop and PocketPC Win32 environment, | |
and a separate source is included for Linux with X11. | |
* How to dynamically find and use the OpenGL ES DLL or | |
shared object, so that the library is not needed at | |
the compile/link stage. | |
* How to use the basic features of OpenGL ES 1.0/1.1 | |
Common Lite, such as vertex arrays, color arrays and | |
lighting. | |
* How to create a self contained small demonstration | |
application with objects generated using procedural | |
algorithms. | |
As the original version was optimized for size instead of | |
performance, that holds true for this OpenGL ES version as | |
well. Thus the performance could be significantly increased, | |
for example by changing the code to use glDrawElements | |
instead of glDrawArrays. The code uses only OpenGL ES 1.0 | |
Common Lite -level function calls without any extensions. | |
The reference OpenGL ES implementations used for this application: | |
* Hybrid's OpenGL ES API Implementation (Gerbera) version 2.0.4 | |
Prebuilt Win32 PC executable: SanOGLES-Gerbera.exe | |
* PowerVR MBX SDK, OpenGL ES Windows PC Emulation version 1.04.14.0170 | |
Prebuilt Win32 PC executable: SanOGLES-PVRSDK.exe | |
Note that DISABLE_IMPORTGL preprocessor macro can be used | |
to specify not to use dynamic runtime binding of the library. | |
You also need to define preprocessor macro PVRSDK to compile | |
the source with PowerVR OpenGL ES SDK. | |
The demo application is briefly tested with a few other OpenGL ES | |
implementations as well (e.g. Vincent, GLESonGL on Linux, Dell | |
Axim X50v). Most of these other implementations rendered the demo | |
erroneously in some aspect. This may indicate that the demo source | |
could still have some work to do with compatibility and correct | |
API usage, although the non-conforming implementations are most | |
probably unfinished as well. | |
Thanks and Acknowledgements: | |
* Toni Lönnberg (!Cube) created the music for original version, which | |
is not featured in this OpenGL ES port. | |
* Sara Kapli (st Rana) for additional camera work. | |
* Paul Bourke for information about the supershapes. | |
------------------------------------------------------------------------ |