POWERVR Insider FAQ

What is OpenGL® ES?

OpenGL ES is a royalty–free, cross-platform API for full-function 2D and 3D graphics on embedded systems - including handheld devices, appliances and vehicles. It is a well-defined subset of desktop OpenGL, creating a flexible and powerful low-level interface between software and graphics acceleration. OpenGL ES 1.X is for fixed function hardware and offers acceleration, image quality and performance. OpenGL ES 2.X enables full programmable 3D graphics.

For more information about OpenGL ES please go to www.khronos.org.

How do I get started with OpenGL ES development using the POWERVR SDK?

If you own embedded hardware or a development platform supported by one of the POWERVR OpenGL ES SDKs you can download the corresponding SDK and get started (the list of supported hardware is mentioned next to the SDK name).

Note that more POWERVR SDKs may be available through our customer’s web pages.

Regardless of whether hardware is available it is generally a good idea to start developing new OpenGL ES applications using the OpenGL ES PC Emulation SDK as it allows for rapid build time as well as convenient debugging facilities. Once an application runs as it should on the PC Emulation SDK it can be easily ported to the target platform by changing the "shell initialization" file (see "what is this ‘shell’ environment business anyway?" below).

You should then proceed to perform platform-dependant optimizations in your application. To begin coding an OpenGL ES application it is best to start with a simple SDK demo project and modify it as required.

Our SDK contains a comprehensive training course which will guide you step-by-step through the API programming, from the most simple initialisation example to advanced feature programming.

I can't find the '.lib' or '.so' driver files for my platform. Can you help?

Imagination Technologies does not distribute platform-specific driver files with the SDK packages. The driver files should be provided as part of your hardware support package for your development board, please contact your hardware supplier to obtain these files.

If you are using an end-user product please download and install the SDK package provided by the manufacturer of your device. This SDK package will contain the required development files. Actual driver files for end-user products should already be present on the device itself but may be hidden from the user.

What is this "Shell" environment business anyway?

The SDK applications are structured according to the following setup: PVRShell.cpp, PVRShell.h Generic source and header code that handles OS-independent initialization. PVRShellAPI.cpp API-specific shell initialization code, e.g. Shell\API\KEGL\PVRShellAPI.cpp performs initialization for the Khronos EGL API, used for both OpenGL ES and OpenVG.

PVRShellOS.cpp OS-specific shell initialization code, e.g. Shell\OS\Windows\PVRShellOS.cpp performs initialization for Windows (used for PC Emulation) and WinCE/PocketPC OSs. OGLES.cpp Source code containing the actual OpenGL ES rendering functions for the demo, Other demo-specific files can be added as required.

This system allows a single piece of OpenGL ES code to run on different combinations of OSs and platforms simply by changing the shell initialization file. Programmers can develop using the PC Emulation SDK and then run their application on the desired platform by swapping the OS-specific initialization file in their projects. In the case of PocketPC and WinCE platforms this is not necessary as the initialization file used for PC Emulation and those OSs is the same.

What is FileWrap?

FileWrap is a “Memory System” which includes all data required for the application within the executable. Any file can be statically linked into the application and looked up by name at run time. This is useful for platforms without a file system and keeps all required data in one place. The application executable. information and guidelines are included in your SDK User Manual.

How can I improve the performance of my application?

The 'Application Development Recommendations' document in the SDK's Documentation section provides advice and performance tips to optimize OpenGL ES applications running on POWERVR-enabled platforms.

How do I use texture compression in my application?

It is important that your application uses compressed textures since they allow for reduced memory footprint, increased performance, larger textures and better power consumption. Most SDK demos use the PVRTC texture compression format that is supported by all POWERVR platforms. The POWERVR SDK provides texture tool utilities that export texture data in PVRTC format, as well as a texture tool library (for Windows and Linux) that can be used for inclusion in custom tools chains.

For more information on PVRTextureTool, please read the document included in the PVRTextureTool package. Resulting PVRTC texture data can be read as external files (.pvr format) or included in an executable as a .h file.

I am getting depth accuracy issues in my OpenGL ES application, how can I solve this?

It is important to remember that most of the depth-sorting accuracy in a scene is a direct factor of the front clip plane value used when setting the projection matrix. The larger this value, the better the depth accuracy. Always push the front clip plane value as high as you can to improve depth accuracy and eliminate ‘Z-fighting’.

Also, it is usually a good idea to invert the depth range with glDepthRange{xf}(1, 0). To do this properly, the depth test function and depth clear value need to be changed accordingly, i.e. use glDepthFunc(GL_GEQUAL) and glClearDepth{xf}(0).

I need to dynamically update the contents of textures, how do I do this?

In general, updating the contents of a texture that has already been used in a frame is discouraged as it will reduce performance. Whenever possible load all texture data up-front at load-time. Loading new texture content dynamically should be done by creating brand new textures, or replacing the full contents of a texture, at maximum, a single time per frame (i.e. using the glTexImage2D() API rather than glSubTexImage2D()).

How do I play sound/implement network code/etc. on a particular platform?

The POWERVR SDK does not cover those topics and is solely based on the graphics aspect of programming POWERVR enabled platforms. Other resources should be consulted for platform-specific topics (e.g. www.pocketmatrix.com for PocketPC programming resources).

I need technical support, what do I do?

The POWERVR Insider developer programme is open to developers writing applications on POWERVR-enabled platforms. If you haven't already registered as a POWERVR Insider, please do so here. Once you've registered you are eligible for technical and co-marketing support and the POWERVR Insider newsletter.

If you are a registered developer we encourage you to send us early versions of your project for feedback. The POWERVR Developer Technology team can provide secure FTP access for file transfers.

The e-mail address for registered developer support is devtech@imgtec.com.

Press Contact
If you have any enquiries or require support on any of our POWERVR graphics SDK:

Check out the
POWERVR FAQ


E-mail Devtech Support devtech@imgtec.com
Join POWERVR Insider