<?php
$static_title = 'Khronos OpenGL ES Registry';
$static_breadcrumb = array(
    '/registry/' => 'Registry',
    'NOLINK' => 'OpenGL ES Registry'
);
include_once("../../assets/static_pages/khr_page_top.php");
?>

<h1 class="pagetitle">Khronos OpenGL&reg; ES Registry</h1>
<div id="mainformat">

<h1 style="text-align:center"> Khronos OpenGL&reg; ES Registry </h1>

<p> The OpenGL ES registry contains specifications of the core API and
    shading language; specifications of Khronos- and vendor-approved
    OpenGL ES extensions; header files corresponding to the
    specifications; and other related documentation. The companion <a
    href="http://www.opengl.org/registry/"> OpenGL Registry </a> has
    related material including the API registry of reserved enumerants
    and functions (shared between OpenGL ES and OpenGL). </p>

<p> <b>Table of Contents</b>
<ul>
<li> <b><a href="#specs">Current OpenGL ES API and Shading Language
     Specifications and Reference Pages</a></b>
     <ul>
     <li> <a href="#specs32">OpenGL ES 3.2 Specifications</a> </li>
     <li> <a href="#specs31">OpenGL ES 3.1 Specifications</a> </li>
     <li> <a href="#specs3">OpenGL ES 3 Specifications</a> </li>
     <li> <a href="#specs2">OpenGL ES 2 Specifications</a> </li>
     <li> <a href="#specs11">OpenGL ES 1.1 Specifications</a> </li>
     <li> <a href="#specs10">OpenGL ES 1.0 Specification</a> </li>
     </ul> </li>
<li> <b><a href="#headers">Core API and Extension Header Files</a></b>
     <ul>
     <li> <a href="#headers32">OpenGL ES 3.2 Header Files</a> </li>
     <li> <a href="#headers31">OpenGL ES 3.1 Header Files</a> </li>
     <li> <a href="#headers3">OpenGL ES 3.0 Header Files</a> </li>
     <li> <a href="#headers2">OpenGL ES 2 Header Files</a> </li>
     <li> <a href="#headers1">OpenGL ES 1.1 Header Files</a> </li>
     <li> <a href="#headerskhr">Shared Khronos Header File</a> </li>
     </ul> </li>
<li> <b><a href="#otherextspecs">OpenGL ES Extension Specifications</a></b>
<li> <b> <a href="https://www.khronos.org/files/ip-disclosures/opengl/">
     IP Disclosures</a> Potentially Affecting OpenGL ES Implementations
     </b></li>
</ul>

<hr>

<h6> <a name="specs"></a> OpenGL ES Core API and Shading Language
     Specifications and Reference Pages </h6>

<p> The current version of OpenGL ES is OpenGL ES 3.2. Specifications for
    older versions 3.1, 3.0, 2.0, 1.1, and 1.0 are also available below. For
    additional specifications, headers, and documentation not listed below,
    see the <a href="http://www.khronos.org/developers/specs/">Khronos.org
    Developer Pages</a>. Header files not labelled with a revision date
    include their last update time in comments near the top of the file.
    </p>

<h6> <a name="specs32"></a> OpenGL ES 3.2 Specifications and
     Documentation </h6>

<ul>
<li> OpenGL ES 3.2 Specification (November 3, 2016)
     <a href="specs/es/3.2/es_spec_3.2.pdf"> without changes marked </a>
     and
     <a href="specs/es/3.2/es_spec_3.2.withchanges.pdf"> with changes marked </a>. </li>
<li> OpenGL ES Shading Language 3.20 Specification (January 29, 2016)
     <a href="specs/es/3.2/GLSL_ES_Specification_3.20.pdf"> without changes marked </a>
     and
     <a href="specs/es/3.2/GLSL_ES_Specification_3.20.withchanges.pdf"> with changes marked </a>. </li>
<li> <a href="http://www.khronos.org/opengles/sdk/docs/man32/">
     OpenGL ES 3.2 Online Manual Pages.</a> </li>
</ul>

<h6> <a name="specs31"></a> OpenGL ES 3.1 Specifications and
     Documentation </h6>

<ul>
<li> OpenGL ES 3.1 Specification (November 3, 2016),
     <a href="specs/es/3.1/es_spec_3.1.pdf"> without changes marked </a>
     and
     <a href="specs/es/3.1/es_spec_3.1.withchanges.pdf"> with changes marked </a>. </li>
<li> OpenGL ES Shading Language 3.10 Specification (January 29, 2016)
     <a href="specs/es/3.1/GLSL_ES_Specification_3.10.pdf"> without changes marked </a>
     and
     <a href="specs/es/3.1/GLSL_ES_Specification_3.10.withchanges.pdf"> with changes marked </a>. </li>
<li> <a href="http://www.khronos.org/opengles/sdk/docs/man31/">
     OpenGL ES 3.1 Online Manual Pages.</a> </li>
</ul>

<h6> <a name="specs3"></a> OpenGL ES 3.0 Specifications and
     Documentation </h6>

<ul>
<li> OpenGL ES 3.0.5 Specification (November 3, 2016),
     <a href="specs/es/3.0/es_spec_3.0.pdf"> without changes marked </a>
     and
     <a href="specs/es/3.0/es_spec_3.0.withchanges.pdf"> with changes marked </a>. </li>
<li> OpenGL ES Shading Language 3.00
     <a href="specs/es/3.0/GLSL_ES_Specification_3.00.pdf">
     Specification </a> (January 29, 2016). </li>
<li> <a href="http://www.khronos.org/opengles/sdk/docs/man3/">
     OpenGL ES 3.0 Online Manual Pages.</a> </li>
</ul>

<h6> <a name="specs2"></a> OpenGL ES 2.0 Specifications and
     Documentation </h6>

<ul>
<li> OpenGL ES 2.0
     <a href="specs/es/2.0/es_full_spec_2.0.pdf">
     Full Specification </a>,
     <a href="specs/es/2.0/es_full_spec_2.0.withchanges.pdf">
     Full Specification with changes marked</a>,
     <a href="specs/es/2.0/es_cm_spec_2.0.pdf">
     Difference Specification </a> (November 2, 2010).
     A
     <a href="http://www.cutt.co.jp/book/978-4-87783-267-4.html">
     Japanese translation </a> of the specification is also available.
     </li>
<li> OpenGL ES Shading Language 1.00
     <a href="specs/es/2.0/GLSL_ES_Specification_1.00.pdf">
     Specification </a> (May 12, 2009). </li>
<li> <a href="http://www.khronos.org/opengles/sdk/docs/man/">
     OpenGL ES 2.0 Online Manual Pages.</a> </li>
</ul>


<h6> <a name="specs11"></a> OpenGL ES 1.1 Specifications and
     Documentation </h6>

<ul>
<li> OpenGL ES 1.1
     <a href="specs/es/1.1/es_full_spec_1.1.pdf"> Full Specification </a>
     and
     <a href="specs/es/1.1/es_cm_spec_1.1.pdf"> Difference Specification </a>
     (April 24, 2008). </li>
<li> <a href="specs/es/1.1/opengles_spec_1_1_extension_pack.pdf"> OpenGL ES
     1.1.03 Extension Pack </a> (July 19, 2005). </li>
<li> <a href="http://www.khronos.org/opengles/sdk/1.1/docs/man/">
     OpenGL ES 1.1 Online Manual Pages.</a> </li>
</ul>

<h6> <a name="specs10"></a> OpenGL ES 1.0 Specification and
     Documentation </h6>

<ul>
<li> <a href="specs/es/1.0/opengles_spec_1_0.pdf"> OpenGL ES 1.0.02
     Specification </a>. </li>
<li> <tt><a href="api/GLES/1.0/gl.h"> gl.h </a></tt> for OpenGL ES 1.0. </li>
<li> The old <i>OpenGL ES 1.0 and EGL 1.0 Reference Manual</i> is
     obsolete and has been removed from the Registry. Please use the
     <a href="http://www.khronos.org/opengles/sdk/1.1/docs/man/">
     OpenGL ES 1.1 Online Manual Pages</a> instead. </li>
</ul>

<hr>

<h6> <a name="headers"></a> API and Extension Header Files </h6>

<p> Because extensions vary from platform to platform and driver to driver,
    OpenGL ES segregates headers for each API version into a header for the
    core API (OpenGL ES 1.0, 1.1, 2.0, 3.0, 3.1 and 3.2) and a separate
    header defining extension interfaces for that core API. These header
    files are supplied here for developers and platform vendors. They define
    interfaces including enumerants, prototypes, and for platforms
    supporting dynamic runtime extension queries, such as Linux and
    Microsoft Windows, function pointer typedefs. Please report problems as
    Issues in the <a href="index.php#repository">OpenGL-Registry</a> github
    repository. </p>

<p> In addition to the core API and extension headers, there is also an
    OpenGL ES version-specific platform header file intended to define
    calling conventions and data types specific to a platform. </p>

<p> Finally, almost all of the headers described below depend on a
    platform header file common to multiple Khronos APIs called
    <tt>&lt;KHR/khrplatform.h&gt;</tt>. </p>

<p> Vendors may include modified versions of any or all of these headers
    with their OpenGL ES implementations, but in general only the
    platform-specific OpenGL ES and Khronos headers are likely to be
    modified by the implementation. This makes it possible for
    developers to drop in more recently updated versions of the headers
    obtained here, typically when new extensions are supplied
    on a platform. </p>

<p> <a name="headers32"></a> <b> OpenGL ES 3.2 Headers </b> </p>

<ul>
<li> <tt><a href="api/GLES3/gl32.h"> &lt;GLES3/gl32.h&gt; </a></tt>
     OpenGL ES 3.2 Header File. </li>
<li> <tt><a href="api/GLES2/gl2ext.h"> &lt;GLES2/gl2ext.h&gt; </a></tt>
     OpenGL ES Extension Header File (this header is defined to contain
     all defined extension interfaces for OpenGL ES 2.0 and all later
     versions, since later versions are backwards-compatible with OpenGL
     ES 2.0).
     </li>
<li> <tt><a href="api/GLES3/gl3platform.h"> &lt;GLES3/gl3platform.h&gt; </a></tt>
     OpenGL ES 3.2 Platform-Dependent Macros (this header is shared with
     OpenGL ES 3.0 and 3.1). </li>
</ul>

<p> <a name="headers31"></a> <b> OpenGL ES 3.1 Headers </b> </p>

<ul>
<li> <tt><a href="api/GLES3/gl31.h"> &lt;GLES3/gl31.h&gt; </a></tt>
     OpenGL ES 3.1 Header File. </li>
<li> <tt><a href="api/GLES2/gl2ext.h"> &lt;GLES2/gl2ext.h&gt; </a></tt>
     OpenGL ES Extension Header File. </li>
<li> <tt><a href="api/GLES3/gl3platform.h"> &lt;GLES3/gl3platform.h&gt; </a></tt>
     OpenGL ES 3.1 Platform-Dependent Macros (this header is shared with
     OpenGL ES 3.0). </li>
</ul>

<p> <a name="headers3"></a> <b> OpenGL ES 3.0 Headers </b> </p>

<ul>
<li> <tt><a href="api/GLES3/gl3.h"> &lt;GLES3/gl3.h&gt; </a></tt>
     OpenGL ES 3.0 Header File. </li>
<li> <tt><a href="api/GLES2/gl2ext.h"> &lt;GLES2/gl2ext.h&gt; </a></tt>
     OpenGL ES Extension Header File. </li>
<li> <tt><a href="api/GLES3/gl3platform.h"> &lt;GLES3/gl3platform.h&gt; </a></tt>
     OpenGL ES 3.0 Platform-Dependent Macros. </li>
</ul>

<p> <a name="headers2"></a> <b> OpenGL ES 2.0 Headers </b> </p>

<ul>
<li> <tt><a href="api/GLES2/gl2.h"> &lt;GLES2/gl2.h&gt; </a></tt>
     OpenGL ES 2.0 Header File. </li>
<li> <tt><a href="api/GLES2/gl2ext.h"> &lt;GLES2/gl2ext.h&gt; </a></tt>
     OpenGL ES Extension Header File. </li>
<li> <tt><a href="api/GLES2/gl2platform.h"> &lt;GLES2/gl2platform.h&gt; </a></tt>
     OpenGL ES 2.0 Platform-Dependent Macros. </li>
</ul>

<p> <a name="headers1"></a> <b> OpenGL ES 1.1 Headers </b> </p>

<ul>
<li> <tt><a href="api/GLES/gl.h"> &lt;GLES/gl.h&gt; </a></tt>
     OpenGL ES 1.1 Header File. </li>
<li> <tt><a href="api/GLES/glext.h"> &lt;GLES/glext.h&gt; </a></tt>
     OpenGL ES 1.1 Extension Header File. </li>
<li> <tt><a href="api/GLES/glplatform.h"> &lt;GLES/glplatform.h&gt; </a></tt>
     OpenGL ES 1.1 Platform-Dependent Macros. </li>
<li> <tt><a href="api/GLES/egl.h"> &lt;GLES/egl.h&gt; </a></tt>
     EGL Legacy Header File for OpenGL ES 1.1 (August 6, 2008) - requires
     <a href="https://www.khronos.org/registry/EGL/api/EGL/egl.h">
     <tt>&lt;EGL/egl.h&gt;</tt></a> from the
     <a href="http://www.khronos.org/registry/EGL/"> EGL Registry </a>.
     </li>
</ul>

<p> <a name="headerskhr"></a> <b> Khronos Shared Platform Header
    (<tt>&lt;KHR/khrplatform.h&gt;</tt>) </b> </p>

<ul>
<li> The OpenGL ES 3.0, 2.0, and 1.1 headers all depend on the shared
     <a href="https://www.khronos.org/registry/EGL/api/KHR/khrplatform.h">
     <tt>&lt;KHR/khrplatform.h&gt;</tt></a> header from the
     <a href="http://www.khronos.org/registry/EGL/"> EGL Registry </a>.
</ul>

<hr>

<h6> <a name="otherextspecs"></a>
     Extension Specifications by number</h6>

<?php include("extensions/esext.php"); ?>

<?php include_once("../../assets/static_pages/khr_page_bottom.php"); ?>
</body>
</html>
