| ------------------------------------------------------------------------ | |
| 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. | |
| ------------------------------------------------------------------------ |