|  | Home · Examples

# Windows CE OpenGL ES

## Introduction

OpenGL is an industry standard API for 2D/3D graphics. It provides a powerful, low-level interface between software and acceleration hardware, and it is operating system and window system independent.

OpenGL ES is a subset of the OpenGL standard. It is meant for use in embedded systems. Hence, it has a smaller, more constrained API.

Qt for Windows CE uses EGL 1.1 to embed OpenGL ES windows within the Windows CE window manager.

To use OpenGL ES enabled widgets in a Qt for Windows CE application, you only need to subclass QGLWidget and draw on instances of the subclass with OpenGL ES functions.

OpenGL ES includes profiles for floating-point and fixed-point arithmetic. The floating point profile is called OpenGL ES CM (Common) and the fixed-point profile is called OpenGL ES CL (Common Lite).

You can run `configure` with the `-opengl-es-cm` option for the Common profile or `-opengl-es-cl` for the Common Lite profile. In both cases, ensure that the `lib` and `includes` paths include the OpenGL ES headers and libararies from your SDK. The OpenGL ES lib should be called either `libGLES_CM.lib` for the Common profile or `libGLES_CL.lib` for the Common Lite profile.

To configure Qt for Windows Mobile 5.0 and OpenGL ES Common Lite support you can run `configure` like this:

    configure -platform win32-msvc2005 -xplatform wincewm50pocket-msvc2005 -opengl-es-cl

The distinction between the Common and Common Lite profiles is important, because the Common Lite profile has less functionality and only supports a fixed-point vertex format.

To start programming with Qt and OpenGL ES on Windows CE, you can start with the Hello GL ES Example. This example shows how to use QGLWidget and QGLPainter with OpenGL ES. It also provides some hints on how to port OpenGL code to OpenGL ES.

### Using OpenGL to Accelerate Normal 2D Painting

Qt provides QOpenGLPaintEngine, a subclass of QPaintEngine that translates QPainter operations into OpenGL calls. This is especially convenient for drawing text or QImage objects in an OpenGL ES context. For further details, refer to the Hello GL ES Example.