[About] [News] [Documentation] [Screenshots]
Table of Contents
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.
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.
Note
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.
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.
