OpenGL ES 1.x Examples
OpenGL ES is a cross-platform API for 2D and 3D graphics on embedded systems such as mobile phones, tablets, vehicles and appliances. It is a subset of desktop OpenGL, tuned to expose the most efficient features of embedded GPUs. OpenGL ES 1.x is the first embedded version of the API, and exposes an efficient, fixed-function pipeline for rendering simpler applications. It is often used for 2D games as the 3D pipeline is more limited than the widely available OpenGL ES 2.x, and it is also used as a basis for teaching engineers about graphics on mobile due to its simpler concepts. If you've never coded OpenGL or OpenGL ES before, it might be useful to start here before moving onto programmable APIs. The examples below will walk you through various basic graphics techniques implemented with OpenGL ES 1.x. This API is available on all current PowerVR GPUs.
Beginner | Intermediate | Advanced
Beginner
-
Draw a triangle to the screen using hardware acceleration.
Description:
A basic tutorial that guides the user, step-by-step, through the process of initializing a window using :API:, drawing a triangle in it using hardware acceleration, and then terminating the window.
Controls:
Esc : Close the application
Links:
-
This training course introduces the PVRShell library.
Description:
This demo deals with the PVRShell library. The PowerVR shell handles all OS specific initialisation code, and has several built in command line features which allow for the specifying of attributes. The library is constructed around a 'PVRShell' base class, and object of which is constructed and returned from a 'NewDemo' function.
Controls:
Esc : Close the application
Links:
-
This training course demonstrates how to apply a texture to a polygon in :API:.
Description:
This training course demonstrates how to apply a texture to a polygon in :API:. The texture is generated procedurally during initialisation and then loaded into :API:. The triangle is then drawn with UV values so that the texture can be applied to it.
Controls:
Esc : Close the application
Links:
-
This training course introduces the PVRTools libraries.
Description:
This training course introduces the PVRTools libraries. These libraries provide various modules to help developers perform many of the common tasks associated with hardware accelerated graphics rendering.
Controls:
Esc : Close the application
Links:
-
This training course introduces the Print3D class featured within the PVRTools library.
Description:
This training course introduces the Print3D class from the PVRTools library. Print3D can be used to display text in both 2D and 3D modes. The default projection mode is 2D but supplying a modelview and projection matrices allow the user to render the text in 3D. Text in different colours is also possible.
Controls:
Links:
-
This training course introduces the PowerVR Object Data (.pod) format.
Description:
This training course introduces the PowerVR Object Data (.pod) format. It goes into detail on how to open .pod files, load any .pfx and .pvr files that have been referenced, and set up the cameras and lights from the .pod file.
Controls:
Esc : Close the application
Links:
Intermediate
-
This training course illustrates how transparency effects can be achieved with blending and the use of some common blending modes.
Description:
Blending is a fragment operation that combines the colour value of fragments as they are drawn with values that are already present in the colour buffer. This allows transparent objects to be simulated. This training course shows how to draw blended geometry using four different types of blending modes set with glBlendFunc().
Controls:
Esc : Close the application
Links:
-
This training course demonstrates how to render anti-aliased lines without enabling full screen anti-aliasing.
Description:
Full screen antialiasing can be too expensive or unavailable on some platforms, but it is possible to render smooth lines without it. This training course shows how to render anti-aliased lines with round caps using texture filtering and blending.
Controls:
Esc : Close the application
Links:
-
A demonstration of a model being lit with 8 point lights at high performance.
Description:
This demo shows a sphere lit by 8 differently coloured spotlights using ambient, diffuse and specular components. Ambient light is a light source of fixed intensity and colour, whilst a diffuse reflection is a reflection of light from a surface at many angles rather than just one. A specular highlight is a visual cue regarding the shape and location of an object in respect to the light source in a scene.
Controls:
Esc : Close the application
Links:
-
This training course demonstrates how to use matrix palettes to animate a skinned character.
Description:
This training course demonstrates how to use matrix palettes to animate a skinned character loaded from a .pod file. A skinned character is an animated mesh which has had a texture applied to it.
Controls:
Esc : Close the application
Links:
-
This training course is an example of how to combine multiple textures.
Description:
This training course demonstrates how to combine multiple textures in six different ways using glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB, param). "param" can be any of the following six options: GL_MODULATE, GL_ADD, GL_ADD_SIGNED , GL_REPLACE, GL_SUBTRACT, GL_DOT3_RGB.
Controls:
Esc : Close the application
Links:
-
A demonstration of the performance gained when using optimized indexed triangle lists.
Description:
Shows a textured model rendered in two different modes: one using a non-optimized triangle list and one using an optimized triangle list. The demo switches modes after a few seconds or after the user presses the action key. Both models were exported with the PVRGeoPOD plug-in from the SDK. The optimized triangle list case was generated using the PVRTTriStrip triangle sorting option from PVRGeoPOD.
Controls:
Esc : Close the application
Links:
-
This training course demonstrates the use of rendering to a texture.
Description:
This training course demonstrates rendering a scene to a pBuffer surface or FBO, then binding and applying that render to an object in an additional render pass.
Controls:
Left : Toggles multisampling of the FBOs
Esc : Close the application
Links:
-
A demonstration of a variety of shadow techniques.
Description:
This demo illustrates various shadow techniques, such as the dynamic blob method which draws a transparent blob under the character and the blob moves based on the centre of the object. The projected geometry method draws the object "projected" onto the floor plane, only pure black shadows are possible due to multiple polygons being projected into the same location (would give intensity differences in the shadow if transparency would be used). The final method is a projected texture where the projected shadow texture is updated dynamically each frame (generated by rendering the scene from the point of view of the light source).
Controls:
Esc : Close the application
Links:
-
This training course demonstrates how to use the PVRTools libraries to create and use shadow volumes.
Description:
This training course demonstrates how to use the PVRTools library to create and use shadow volumes. The process for using this technique involves updating dynamic shadow volumes before drawing the fully lit scene. After that, the stencil test must be enabled, and the shadow volumes must be drawn to fill the stencil buffer. Then draw a full screen quad that will only appear where the stencil buffer is not zero, and finally disable the stencil test.
Controls:
1 : Toggle display of shadow volumes
Esc : Close the application
Links:
-
This training course demonstrates how to implement hardware accelerated skinning using .pod files.
Description:
This training course demonstrates how to implement hardware accelerated skinning using the .pod file loading tools found in the PVRTools library.
Controls:
Left/Right : Rotate model clockwise/anti-clockwise
Up/Down : Zoom out/in
Esc : Close the application
Links:
-
This training course demonstrates how to use the stencil buffer to mask areas of the screen when rendering.
Description:
This training course demonstrates how to use the stencil buffer to mask areas of the screen when rendering. A sphere and a cylinder are drawn intersecting. The sphere is drawn first, then a stencil test performed using the cylinder. This test is used to determine what colour should be drawn for a given area of the sphere.
Controls:
Esc : Close the application
Links:
-
This demo illustrates the visual difference between different texture filter modes.
Description:
This demo illustrates the visual difference between the following different texture filter modes: GL_LINEAR (Bilinear with no MIPMapping), GL_LINEAR_MIPMAP_NEAREST (Bilinear with MIPMapping), GL_LINEAR_MIPMAP_LINEAR (Trilinear).
Controls:
Esc : Close the application
Links:
Advanced
-
A demonstration of morphing in combination with multi-texturing.
Description:
Morphing creates the final object using weighted blending between a number of different configurations of the same object. Each configuration controls a certain aspect of the object. In the case of EvilSkull the different configurations represent the position of the eyebrows and cheekbones. By setting different weights it is possible to generate a huge variety of facial expressions. Meanwhile the background shows multi-texturing with two independently animated layers.
Controls:
Esc : Close the application
Links:
-
A demonstration of drawing a fractal using render to texture.
Description:
A recursive fractal effect is demonstrated here using the render to texture technique. This technique is a useful method to create a variety of effects. Basically, a scene is rendered as usual, but in a texture for future reuse.
Controls:
Esc : Close the application
Links:
-
A demonstration of a fur effect on a simple duck model.
Description:
Demonstrates a method for rendering fur. Multiple translucent "shells" of the original model are rendered, each slightly larger than the previous. The texture applied to these layers contains a "dot" in the alpha channel to show where a hair passes through the "shell".
Controls:
Left/Right : Cycle Left/Right through explanation pages
Esc : Close the application
Links:
-
A demonstration of a cell-shading (a.k.a. Toon shading) effect applied on an animated model.
Description:
Cell-Shading is the "art" of rendering your objects to look like cartoons. This demo shows a dancing mouse with a hard black outline and banded shading to achieve the desired cartoon-look. Both effects are set up using optimised software routines.
Controls:
Esc : Close the application
Links:
-
Demonstrates the use of PVRScope and the example graphing code.
Description:
This demo shows the use of PVRScope and the example graphing code that allows an application to return performance statistics from the GPU in real time. For further details, refer to the PVRScope User Manual.
Controls:
Links:
-
Demonstrates the use of PVRScope's remote communication features.
Description:
This example shows how to use the editable data and custom mark functionality of PVRScope. PVRTune must be running and connected to an instance of PVRPerfServer running on the target device for this demo to function.
Controls:
Links:
-
A demonstration of particle effects with frame buffer blending.
Description:
This demo shows a physics based particle effect displaying a total of 900 particles (600 real + 300 reflected). This effect was generated using alpha blending, which involves combining a translucent foreground color with a background colour, producing a new blended color as a result.
Controls:
Esc : Close the application
Links:
-
This demonstration illustrates the PolyBump technology developed by Crytek (commonly referred to as normal or bump mapping).
Description:
This demo illustrates the Polybump technology developed by Crytek to enhance 3D-rendering quality without increasing the overhead in real-time rendering. It allows users to create and render an extremely low poly model using per pixel DOT3 lighting. The DOT3 NormalMap is automatically generated from a high poly model. As a result when displaying the low polygon model with the DOT3 map generated from the high polygon object there is virtually no visible difference between the two. Rendering time is greatly decreased and bandwidth is compressed. In this demo a model of a detailed human head is show even though there are only 276 polygons in the model.
Controls:
1 : Toggle normal map on/off
Esc : Close the application
Links:
-
This demo shows a transparent vase with dynamic reflections on its metallic sections.
Description:
This demo shows a transparent vase with dynamic reflections on its metallic sections. The effect is achieved through a mixture of texturing blending, and a two pass render that draws both the back and front face of the glass object separately with different culling modes.
Controls:
Esc : Close the application
Links:









