Managed OpenGL ES and the Vincent 3D Implementation

OpenGLEmulator SensoryOverloadEmulator

A few months ago, I wrote a managed wrapper for OpenGL ES. This wrapper worked great on the HTC Touch Diamond, but I never really tested it out on the Vincent 3D OpenGL ES software implementation. This was partly due to my misconception that Vincent 3D was a Common-Lite implementation of OpenGL ES (which would mean it only supports fixed point). As of recently, I've been working with OpenGL ES on a regular basis, and realized that Vincent 3D was in fact a Common implementation (it supports floating point as well as fixed point)!

What this means that the managed wrapper should in fact be fully functional on top of it. However, there was a bug in the wrapper (or maybe Vincent 3D) that prevented it from working properly. So after I addressed it, the wrapper is working fine, for the most part: there seems to be some floating point precision issues with Vincent 3D. I am guessing those may be due to some sort of fixed point conversion taking place in the pipeline, but I am unsure.

Anyhow, as you can see from the screenshots above, my triangle sample and Sensory Overload are both working on an emulator! Albeit, it is quite slow, and the emulator doesn't have a G-Sensor that allows you to control the ship. :)

Here's the updated Managed OpenGL ES source code.


Anonymous said...

Hey great news. I like your work. Thanks for sharing it.

Yann Droneaud said...

I'd like to thank you for publishing an OpenGL ES demo for Windows Mobile .NET

I've made some changes on it:
- full screen,
- gradient background,
- alpha blending,
- screen rotation support.

It was tested on HTC Touch HD and Toshiba TG01 using native OpenGL ES implementation.

When working on the demo, I've found something very strange: when not in full screen, alpha blending is not handled, thus, rendering is faster when the window has a title bar and a menu bar.

It can be downloaded from