<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License
"Eclipse Public License v1.0" which accompanies this distribution,
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
Nokia Corporation - initial contribution.
Contributors:
-->
<!DOCTYPE concept
PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept xml:lang="en" id="GUID-12D5C140-DFDA-549B-9CCF-EF7488B832AE"><title>OpenGLES Interface Overview</title><shortdesc>The OpenGLES Interface component provides the Symbian platform with an interface to the open-source, cross-platform OpenGL ES APIs defined by the Khronos Group. The component includes the Khronos-released header files, some Symbian-specific header files, LIB, DEF and MMP files and UIDs. It does not provide any implementations of the APIs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. </p> <section><title>Supported APIs</title> <p>The OpenGL ES specifications are defined by the Khronos Group (<xref scope="external" href="http://www.khronos.org/">http://www.khronos.org/</xref>). The following table provides links to the relevant specifications. </p> <table id="GUID-62367673-DC27-5C8C-92E5-859B868E0D63"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Specification Version</entry> <entry>Location</entry> </row> </thead> <tbody><row><entry><p>OpenGL ES 1.1.10 </p> </entry> <entry><p> <xref scope="external" href="http://www.khronos.org/registry/gles/specs/1.1/es_full_spec.1.1.10.pdf">http://www.khronos.org/registry/gles/specs/1.1/es_full_spec.1.1.10.pdf</xref> </p> </entry> </row> <row><entry><p>OpenGL ES 2.0 </p> </entry> <entry><p> <xref scope="external" href="http://www.khronos.org/files/opengles_spec_2_0.pdf">http://www.khronos.org/files/opengles_spec_2_0.pdf</xref> </p> </entry> </row> </tbody> </tgroup> </table> <p>The OpenGLES Interface component includes the Khronos-released header files that conform to these specifications. The header files incorporate some minor changes, such as in-source comments. </p> <p>These header files are derived from the official Khronos Subversion Repository (<xref scope="external" href="https://cvs.khronos.org/svn/repos/">https://cvs.khronos.org/svn/repos/</xref>) as shown in the following table. </p> <table id="GUID-E32EA3AA-47A0-58C4-B4A8-5A665631CF2F"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Specification Version</entry> <entry>Repository</entry> </row> </thead> <tbody><row><entry><p>OpenGL ES 1.X </p> </entry> <entry><p> <filepath>/ogles/branches/1.X/src/include/GLES/</filepath> </p> </entry> </row> <row><entry><p>OpenGL ES 2.0 </p> </entry> <entry><p> <filepath> /ogles/trunk/src/include/GLES2/</filepath> </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Profiles supported</title> <p>The following OpenGL ES profiles are supported: </p> <ul><li id="GUID-24D0587A-D3C9-5E94-9C18-C23A7C22AC61"><p>OpenGL ES 1.X Common Profile (CM) </p> </li> <li id="GUID-9DC90BBD-6A94-5624-B49A-9A5DB15ECDE5"><p>OpenGL ES 1.X Common-Lite Profile (CL) </p> </li> <li id="GUID-829CA7B3-2776-5C6B-A645-D12B45BC368C"><p>OpenGL ES 2.0. There is only one profile, therefore only one version exists. </p> </li> </ul> </section> <section><title>Extensions supported</title> <p>OpenGL ES implementations can expose implementation-specific functionality by using the standard extension mechanisms. </p> <ul><li id="GUID-FE9F33D6-74B2-5A8F-A211-C13C740493F0"><p>The OpenGL ES 1.X extensions, which are defined by Khronos, are located in <filepath>/epoc32/include/GLES/glext.h</filepath>. </p> </li> <li id="GUID-F14417AB-02C4-5C84-A30F-658CACEEF3A7"><p>The OpenGL ES 2.0 extensions, which are defined by Khronos, are located in <filepath>/epoc32/include/GLES2/gl2ext.h</filepath>. </p> </li> </ul> <p>Implementers can disable extensions by using <filepath>glextplatform.h</filepath> and <filepath>gl2extplatform.h</filepath>, respectively. </p> <p>Implementers edit the Symbian-supplied <filepath>/epoc32/include/GLES/glextplatform.h</filepath> by defining an appropriate define guard. For example, defining <codeph>GL_OES_draw_texture</codeph> in <filepath>glextplatform.h</filepath> prevents definition of <codeph>GL_TEXTURE_CROP_RECT_OES</codeph> in <filepath>glext.h</filepath>. </p> </section> <section><title>Organization of file names and directories</title> <p>Khronos defines the file names and directories for OpenGL ES in the <xref scope="external" href="http://www.khronos.org/registry/implementers_guide.html">Khronos API Implementers Guide</xref>. </p> </section> <section><title>Library files</title> <p>For each profile, the OpenGLES Interface component provides a library file as shown in the following table. The library filenames are specified by Khronos. </p> <table id="GUID-BC6E0960-7C41-553D-A964-9E0F4B7B0EF1"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Library Name</entry> <entry>Usage</entry> </row> </thead> <tbody><row><entry><p>libGLES_CM.lib </p> </entry> <entry><p>OpenGL ES 1.1 Common Profile with EGL </p> </entry> </row> <row><entry><p>libGLES_CL.lib </p> </entry> <entry><p>OpenGL ES 1.1 Common-Lite Profile with EGL </p> </entry> </row> <row><entry><p>libGLESv1_CM.lib </p> </entry> <entry><p>OpenGL ES Common Profile without EGL (known as OpenGL ES 1.1 v1) </p> </entry> </row> <row><entry><p>libGLESv2.lib </p> </entry> <entry><p>OpenGL ES 2.0 </p> </entry> </row> </tbody> </tgroup> </table> <p> <b>Note</b>: OpenGL ES 1.1 v1 is not another version of OpenGL ES. It is instead another form of packaging for the OpenGL ES 1.1 API. </p> </section> <section><title>Definition files</title> <p>The following definition (<filepath>DEF</filepath>) files are delivered by the OpenGLES Interface component in order to ensure binary compatibility. </p> <table id="GUID-55CF6C4A-C21F-5866-B85D-8226EEF0A03E"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Name and path</entry> <entry>Usage</entry> </row> </thead> <tbody><row><entry><p> <filepath>
/epoc32/include/platform/def/<plat>/openglesu.def</filepath> </p> </entry> <entry><p>OpenGL ES 1.0 with EGL (CM profile) </p> </entry> </row> <row><entry><p> <filepath>
/epoc32/include/platform/def/<plat>/opengles11u.def</filepath> </p> </entry> <entry><p>OpenGL ES 1.1 with EGL (CM profile) </p> </entry> </row> <row><entry><p> <filepath>
/epoc32/include/platform/def/<plat>/libglesv1_cm11u.def</filepath> </p> </entry> <entry><p>OpenGL ES 1.1 without EGL (CM profile) </p> </entry> </row> <row><entry><p> <filepath>
/epoc32/include/platform/def/<plat>/libglesv2u.def</filepath> </p> </entry> <entry><p>OpenGL ES 2.0 </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody><related-links><link href="GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita"><linktext>OpenGLES Collection</linktext> </link> </related-links></concept>