[About] [News] [Documentation] [Screenshots]

Chapter 3. Using bugle with OpenGL ES

3.1. Introduction

Bugle has partial support for OpenGL ES. The OpenGL ES 2.0 support has been tested using the AMD OpenGL ES Emulator 1.3, and both 1.1 and 2.0 support have been tested on an ARM Linux platform. OpenGL ES 1.0 support has not been tested and is probably broken. For OpenGL ES 1.x, only the Common (CM) profile is supported.

The testing shows that basic features work. These include tracing, and the debugger using breakpoints, examining state, and examining shaders. Texture and vertex buffer viewing does not currently work (due to limitations of the query mechanisms in OpenGL ES). Many of the filtersets do not work, either because they intrinsicly depend on features excluded from OpenGL ES, or because they have not yet been ported. The test suite is not supported.

It should be noted that when using an emulator that works on top of OpenGL, an alternative approach to debugging is to use bugle as a regular (desktop) OpenGL debugger. This will reveal data such as textures, VBOs and framebuffers. However, it cannot access the error checking that is done in the emulation layer. For example, an INVALID_ENUM error will not be caught by the debugger if it is generated entirely within the emulation layer.

Support on top of X11 is theoretically present and compiles, but has not been tested. Feedback from anyone with a working OpenGL ES implementation on an X11 system is welcomed.

3.2. Building

The process for building is the same as described in Chapter 2, Installing Bugle. To indicate that OpenGL ES is desired, add either gltype=gles1cm or gltype=gles2 to the scons command line. There is no need to specify glwin, as it will automatically default to EGL.


Desktop OpenGL header files and libraries are still required for the GUI debugger.

You also need to ensure that your various paths are set correctly. The headers, libraries and DLLs for the OpenGL ES implementation need to be listed in CPATH, LIBRARY_PATH and PATH respectively, unless the compiler is already configured to find them.

3.3. Windows specifics

Apart from the usual installation step, some extra setup is required on a Windows system when using OpenGL ES, due to the limitations of the dynamic linker. For OpenGL ES 2.0, create copies of the system libEGL.dll and libGLESv2.dll called bglEGL.dll and bglGLESv2.dll respectively. Then modify each of these files so that links to the other use the replacement name. This can be done as follows:

$ sed -b 's/libGLESv2/bglGLESv2/g' libEGL.dll > bglEGL.dll
$ sed -b 's/libEGL/bglEGL/g' libGLESv2.dll > bglGLESv2.dll

You should check that the new files are exactly the same size as the originals. Next, make sure that the versions of libEGL.dll and libGLESv2.dll installed by bugle are the first on the path, and that the renamed libraries you generated are also on the path.

For OpenGL ES 1.x, the process is the same, except that references to libGLESv2.dll should be replaced by libGLESv1_CM.dll.

Windows also has multiple function calling conventions, and different implementations of OpenGL ES (particularly for 1.x) make inconsistent choices. You can override the automatic choice by passing callapi=__stdcall or callapi=__cdecl to select the stdcall or cdecl calling convention. You should be able to determine the convention by examining GLES/glplatform.h or GLES2/gl2platform.h.

Get BuGLe at SourceForge.net. Fast, secure and Free Open Source software downloads