--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/opengles/openglesinterface/documentation/implementers_guide.html Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,403 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Khronos API Implementers' Guidelines</title><link rel="stylesheet" href="igstyle.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.69.1"><meta name="description" content="Guidelines to be followed by implementers of Khronos Group
+ APIs"><style type="text/css">
+body { background-image: url('draft.png');
+ background-repeat: no-repeat;
+ background-position: top left;
+ /* The following properties make the watermark "fixed" on the page. */
+ /* I think that's just a bit too distracting for the reader... */
+ /* background-attachment: fixed; */
+ /* background-position: center center; */
+ }</style></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id4739083"></a>Khronos API Implementers' Guidelines</h1></div><div><div class="authorgroup"><h4 class="editedby">Edited by</h4><h3 class="editor"><span class="firstname">Mark</span> <span class="surname">Callow</span></h3><div class="affiliation"><span class="orgname">HI Corporation<br></span></div><code class="email"><<a href="mailto:callow_mark%20at%20hicorp.co.jp">callow_mark at hicorp.co.jp</a>></code><p></p></div></div><div><p class="copyright">Copyright © 2007 The Khronos Group Inc.</p></div><div><div class="legalnotice"><a name="legal"></a><p>This document is protected by copyright laws and contains
+ material proprietary to the Khronos Group, Inc. It or any components
+ may not be reproduced, republished, distributed, transmitted,
+ displayed, broadcast or otherwise exploited in any manner without
+ the express prior written permission of Khronos Group.
+ The receipt or possession of this
+ document does not convey any rights to reproduce, disclose, or
+ distribute its contents, or to manufacture, use, or sell anything
+ that it may describe, in whole or in part.</p><p>Khronos Group grants express permission to any current Promoter,
+ Contributor or Adopter member of Khronos to copy and redistribute
+ UNMODIFIED versions of this document in any fashion, provided
+ that NO CHARGE is made for the document and the latest available
+ update of the document is used whenever possible.
+ Such distributed document may be
+ re-formatted AS LONG AS the contents of the document are not
+ changed in any way. The document may be incorporated into a
+ product that is sold as long as such product includes significant
+ independent work developed by the seller. A link to the current
+ version of this document on the Khronos Group web-site should
+ be included whenever possible with document distributions.</p><p>Khronos Group makes no, and expressly disclaims any,
+ representations or warranties, express or implied, regarding this
+ document, including, without limitation, any implied warranties
+ of merchantability or fitness for a particular purpose or
+ non-infringement of any intellectual property. Khronos Group makes
+ no, and expressly disclaims any, warranties, express or implied,
+ regarding the correctness, accuracy, completeness, timeliness, and
+ reliability of the document. Under no circumstances will the Khronos
+ Group, or any of its Promoters, Contributors or Members or their
+ respective partners, officers, directors, employees, agents or
+ representatives be liable for any damages, whether direct, indirect,
+ special or consequential damages for lost revenues, lost profits,
+ or otherwise, arising from or in connection with these
+ materials.</p><p><span class="trademark">Khronos</span>™ is a trademark of
+ The Khronos Group Inc. <span class="trademark">OpenGL</span>®
+ is a registered trademark, and
+ <span class="trademark">OpenGL ES</span>™is a trademark, of
+ Silicon Graphics, Inc.</p></div></div><div><div class="revhistory"><table border="1" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="3"><b>Revision History</b></th></tr><tr><td align="left">Revision 0.9.0</td><td align="left">2006-12-08 19:15:11 -0800</td><td align="left">msc</td></tr><tr><td align="left" colspan="3">First docbook version</td></tr><tr><td align="left">Revision 0.91.0</td><td align="left">2006-12-12 17:26:03 -0800</td><td align="left">msc</td></tr><tr><td align="left" colspan="3">Public review version: amended copyright notice; changed OpenKODE and GLES utility library names.</td></tr></table></div></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>Guidelines to be followed by implementers of Khronos Group
+ <em class="glossterm">APIs</em></p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#introduction">Introduction</a></span></dt><dt><span class="section"><a href="#generalguidelines">General Guidelines </a></span></dt><dd><dl><dt><span class="section"><a href="#controlled">Vendor Controlled Platforms (e.g. BREW, SymbianOS)</a></span></dt><dt><span class="section"><a href="#uncontrolled">Uncontrolled Platforms (e.g. GNU/Linux, Windows, Windows CE)</a></span></dt></dl></dd><dt><span class="section"><a href="#id4787332">Acknowledgements</a></span></dt><dt><span class="glossary"><a href="#id4787444">Glossary</a></span></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1. <a href="#id4713194">Header File Names and Locations</a></dt><dt>2. <a href="#id4786950">Recommended Library Names</a></dt></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction"></a>Introduction</h2></div></div></div><p> This document provides guidelines for
+ <a href="#gls_implementer"><em class="firstterm">implementers
+ </em></a>
+ of OpenGL ES, OpenVG and other <a href="#gls_api"><em class="firstterm">API</em></a>
+ standards specified by the Khronos Group.
+ The aim of these hints is to provide commonality between implementations to
+ ease the logistical problems faced by developers using multiple different
+ implementations of an <em class="glossterm">API</em>.
+ </p><p> One of the primary goals is to allow an application binary to run
+ on top of multiple different OpenGL ES / OpenVG / EGL implementations
+ on the same platform. </p><p> Implementers are strongly urged to comply with these guidelines.
+ </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="generalguidelines"></a>General Guidelines </h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="controlled"></a>Vendor Controlled Platforms (e.g. BREW, SymbianOS)</h3></div></div></div><p> Implementers should follow the linkage specifications established
+ by the
+ <a href="#gls_vendor"><em class="firstterm">platform vendor</em></a>
+ .
+ </p><div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p> Use the header files, (e.g., for OpenGL ES, gl.h & egl.h)
+ provided by the platform vendor. </p></li><li style="list-style-type: circle"><p> Use the function names specified in those header files. </p></li><li style="list-style-type: circle"><p>Implement all <em class="glossterm">API</em>
+ entry points in the same way as in the
+ <em class="glossterm">vendor</em>-provided
+ <a href="#gls_abi"><em class="firstterm">ABI</em></a>. That is,
+ functions should be functions, in-line functions should be
+ in-line functions and macros should be macros.
+ </p></li><li style="list-style-type: circle"><p> Use the platform specified library names. </p></li></ul></div><p>Vendors of controlled platforms are strongly urged to follow the
+ recommendations given below for <a href="#uncontrolled" title="Uncontrolled Platforms (e.g. GNU/Linux, Windows, Windows CE)">
+ Uncontrolled Platforms</a> when adding a Khronos Group
+ <em class="glossterm">API</em> to their platform.
+ </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="uncontrolled"></a>Uncontrolled Platforms (e.g. GNU/Linux, Windows, Windows CE)</h3></div></div></div><p> When providing implementations for platforms where the vendor
+ does not provide standard linkage specifications, implementers
+ are urged to follow the following recommendations.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="headerfiles"></a> Header Files </h4></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="hfgeneral"></a>General</h5></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Use the Khronos provided header files (e.g., for OpenGL
+ ES, <code class="filename">gl.h</code> &
+ <code class="filename">egl.h</code>). If changes are
+ unavoidable, consider contributing your changes back to Khronos
+ by updating the standard header files in the Khronos Subversion
+ tree. </p></li><li><p> If you make your own header files and the platform is
+ Windows, make sure they are suitable for use with
+ <a href="#gls_mfc"><em class="firstterm"><span class="acronym">MFC</span></em></a>.
+ For example
+ <code class="code">#define EGL_DEFAULT_DISPLAY GetDC(0)</code>
+ is broken for MFC. You need to use
+ <code class="code">::GetDC(0)</code>
+ because several MFC have their own
+ <code class="code">GetDC(void)</code>
+ methods.</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="hfegl"></a>EGL</h5></div></div></div><div class="itemizedlist"><ul type="disc"><li><p> Package the EGL header files
+ <code class="filename">egl.h</code>
+ and
+ <code class="filename">eglplatform.h</code>
+ in the folder
+ <code class="filename">EGL</code>.
+ </p></li><li><p> <code class="filename">eglplatform.h</code>
+ contains platform
+ dependent items and needs to be modified by the implementer.
+ In particular the
+ <span class="type">eglNativeDisplayType</span>,
+ <span class="type">eglNativeWindowType</span>, and
+ <span class="type">eglNativePixmapType</span>
+ typedefs must be defined as appropriate for the platform
+ (typically, they will be typedef'ed to corresponding types
+ in the native window system). Developer documentation should
+ mention the correspondence so that developers know what
+ parameters to pass to
+ <code class="function">eglCreateWindowSurface</code>,
+ <code class="function">eglCreatePixmapSurface</code>, and
+ <code class="function">eglCopyBuffers</code>.
+ Documentation should also describe the format of the
+ <em class="parameter"><code>display_id</code></em>
+ parameter to
+ <code class="function">eglGetDisplay</code>,
+ since this is a platform-specific identifier.</p></li><li><p> Include
+ <code class="filename">eglplatform.h</code>
+ in
+ <code class="filename">egl.h</code>
+ thus:
+ <code class="code">#include <EGL/eglplatform.h></code>
+ . Do not use
+ <code class="code">#include <eglplatform.h></code>
+ because app. makefiles will then need 2 different
+ <em class="parameter"><code>-I<path></code></em>
+ options to find both include files. </p></li><li><p> Do not include
+ <code class="filename">gl.h</code>
+ in
+ <code class="filename">egl.h</code>
+ . </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="hfgles1x"></a> OpenGL ES 1.x </h5></div></div></div><div class="itemizedlist"><ul type="disc"><li><p> Package the OpenGL ES header files
+ <code class="filename">gl.h</code>
+ and
+ <code class="filename">glplatform.h</code>
+ in the folder
+ <code class="filename">GLES</code>
+ . </p></li><li><p> <code class="filename">glplatform.h</code>
+ contains platform dependent items and may need to be
+ modified by the implementer. Implementers are encouraged
+ to provide their additions for newly supported platforms
+ to the Khronos Group for inclusion in the Adopters'
+ distribution.</p></li><li><p> For compatibility with GLES 1.0 implementations, include
+ in
+ <code class="filename">GLES</code>
+ a special
+ <code class="filename">egl.h</code>
+ containing the following:
+ </p><div class="informalexample"><pre class="programlisting">
+#include <EGL/egl.h>
+#include <GLES/gl.h></pre></div><p>
+ This is because many early OpenGL ES 1.0 implementations
+ included
+ <code class="filename">gl.h</code>
+ in
+ <code class="filename">egl.h</code>
+ so many existing applications only include
+ <code class="filename">egl.h</code>
+ . </p></li><li><p>The name <code class="filename">glu.h</code>
+ is reserved for future use by the Khronos Group.</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="hfgles2x"></a> OpenGL ES 2.x </h5></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>The core header files for OpenGL ES 2.x are called
+ <code class="filename">gl2.h</code> and
+ <code class="filename">gl2platform.h</code> to
+ keep them distinct from the GLES 1.x header files and enable
+ application to use both versions.</p></li><li><p>The function declarations and constant definitions for
+ OpenGL ES 2.x are divided into 2 header files:
+ <code class="filename">gl2.h</code>
+ declares and defines all the core functions and constants;
+ <code class="filename">gl2ext.h</code>
+ declares and defines functions and constants for all
+ Khronos approved extensions and can be used even if the
+ implementation doesn't provide a particular extension.</p><p>Functions and constants for Implementer
+ extensions should be declared and defined in an implementer's
+ own header file using names and constant values obtained from
+ the Khronos Group's Extension Registry.</p></li><li><p>Package all these header files in the folder
+ <code class="filename">GLES2</code>.</p></li><li><p>The name <code class="filename">glu2.h</code>
+ is reserved for future use by the Khronos Group.</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="hfopenkode"></a>OpenKODE</h5></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Package the OpenKODE header files
+ <code class="filename">kd.h</code>
+ and
+ <code class="filename">kdplatform.h</code>
+ in the folder
+ <code class="filename">KD</code>.
+ </p></li><li><p>Implementers are encouraged to code
+ <code class="filename">kd.h</code> such that it
+ includes as few as possible of the platform's include files,
+ and to avoid declaring C and POSIX standard functions. This
+ will ease the creation of portable OpenKODE applications,
+ and help stop non-portable code being added accidentally.
+ </p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="hfopenvg"></a>OpenVG</h5></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Package the OpenVG header files
+ <code class="filename">openvg.h</code>
+ and, when provided,
+ <code class="filename">vgu.h</code>
+ in the folder
+ <code class="filename">VG</code>
+ .</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="hfsummary"></a>Header File Summary</h5></div></div></div><div class="table"><a name="id4713194"></a><p class="title"><b>Table 1. Header File Names and Locations</b></p><table summary="Header File Names and Locations" border="1"><colgroup><col align="left"><col align="left"><col align="left"><col align="left"><col align="left"></colgroup><thead><tr><th align="left"> API </th><th align="left"> Location </th><th align="left"> Header Files </th><th align="left"> How to include </th><th align="left"> Provider </th></tr></thead><tbody><tr><td rowspan="2" align="left" valign="top"> EGL 1.x </td><td rowspan="2" align="left" valign="top">
+ <code class="filename">EGL</code>
+ </td><td align="left">
+ <code class="filename">egl.h</code>
+ </td><td align="left">
+ <code class="code">#include <EGL/egl.h></code>
+ </td><td align="left">
+ Khronos
+ </td></tr><tr><td align="left">
+ <code class="filename">eglplatform.h</code>
+ <sup>[<a name="id4713330" href="#ftn.id4713330">1</a>]</sup>
+ </td><td align="left">
+ Included by <code class="filename">egl.h</code>
+ </td><td align="left">
+ Vendor or Implementer
+ </td></tr><tr><td rowspan="3" align="left" valign="top"> OpenGL ES 1.x </td><td rowspan="3" align="left" valign="top">
+ <code class="filename">GLES</code>
+ </td><td align="left">
+ <code class="filename">gl.h</code>
+ </td><td align="left">
+ <code class="code">#include <GLES/gl.h></code>
+ </td><td align="left">
+ Khronos
+ </td></tr><tr><td align="left">
+ <code class="filename">glplatform.h</code>
+ <sup>[<a name="id4713439" href="#ftn.id4713439">2</a>]</sup>
+ </td><td align="left">
+ Included by <code class="filename">gl.h</code>
+ </td><td align="left">
+ Vendor or Implementer
+ </td></tr><tr><td align="left">
+ <code class="filename">glu.h</code>
+ </td><td colspan="2" align="center">
+ Reserved for future use
+ </td></tr><tr><td rowspan="4" align="left" valign="top"> OpenGL ES 2.x </td><td rowspan="4" align="left" valign="top">
+ <code class="filename">GLES2</code>
+ </td><td align="left">
+ <code class="filename">gl2.h</code>
+ </td><td align="left">
+ <code class="code">#include <GLES2/gl2.h></code>
+ </td><td align="left">
+ Khronos
+ </td></tr><tr><td align="left">
+ <code class="filename">gl2platform.h</code>
+ </td><td align="left">
+ Included by <code class="filename">gl2.h</code>
+ </td><td align="left">
+ Vendor or Implementer
+ </td></tr><tr><td align="left">
+ <code class="filename">gl2ext.h</code>
+ </td><td align="left">
+ <code class="code">#include <GLES2/gl2ext.h></code>
+ </td><td align="left">
+ Khronos
+ </td></tr><tr><td align="left">
+ <code class="filename">glu2.h</code>
+ </td><td colspan="2" align="center">
+ Reserved for future use
+ </td></tr><tr><td rowspan="2" align="left" valign="top"> OpenKODE 1.x </td><td rowspan="2" align="left" valign="top">
+ <code class="filename">KD</code>
+ </td><td align="left">
+ <code class="filename">kd.h</code>
+ </td><td align="left">
+ <code class="code">#include <KD/kd.h></code>
+ </td><td align="left">
+ Khronos
+ </td></tr><tr><td align="left">
+ <code class="filename">kdplatform.h</code>
+ </td><td align="left">
+ Included by <code class="filename">kd.h</code>
+ </td><td align="left">
+ Vendor or Implementer
+ </td></tr><tr><td rowspan="2" align="left" valign="top"> OpenVG 1.x </td><td rowspan="2" align="left" valign="top">
+ <code class="filename">VG</code>
+ </td><td align="left">
+ <code class="filename">openvg.h</code>
+ </td><td align="left">
+ <code class="code">#include <VG/openvg.h></code>
+ </td><td align="left">
+ Khronos
+ </td></tr><tr><td align="left">
+ <code class="filename">vgu.h</code>
+ <sup>[<a name="id4786686" href="#ftn.id4786686">3</a>]</sup>
+ </td><td align="left">
+ <code class="code">#include <VG/vgu.h></code>
+ </td><td align="left">
+ Khronos
+ </td></tr></tbody></table><div class="footnotes"><div class="footnote"><p><sup>[<a name="ftn.id4713330" href="#id4713330">1</a>] </sup>
+ Many early EGL implementations used
+ <code class="filename">egltypes.h</code>
+ instead of the now recommended
+ <code class="filename">eglplatform.h</code>
+ .</p></div><div class="footnote"><p><sup>[<a name="ftn.id4713439" href="#id4713439">2</a>] </sup>
+ <code class="filename">glplatform.h</code>
+ does not exist in many early implementations of
+ OpenGL ES 1.x. Platform dependent declarations were
+ included directly in <code class="filename">gl.h
+ </code>.</p></div><div class="footnote"><p><sup>[<a name="ftn.id4786686" href="#id4786686">3</a>] </sup>
+ Required, if the OpenVG utility library is provided.
+ </p></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="notes"></a>Notes </h5></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>To find the include files, use appropriate compiler
+ options in the makefiles for your sample programs; e.g.
+ <em class="parameter"><code>-I</code></em> (gcc, linux) or
+ <em class="parameter"><code>/I</code></em> (Visual C++).
+ </p></li><li><p>Given the different IDEs & compilers people use,
+ especially on Windows, it is not possible to recommend a system
+ location to place these include files. Where obvious choices
+ exist Khronos recommends implementers take advantage of them.
+ </p></li><li><p>In particular, GNU/Linux implementations should
+ follow the
+ <a href="http://www.pathname.com/fhs/" target="_top">
+ <em class="citetitle">Filesystem Hierarchy Standard</em>
+ </a>
+ for location of headers and libraries.
+ </p></li></ul></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="libraries"></a>Libraries</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>It is highly desirable to implement all
+ <em class="glossterm">API</em> entry points as
+ function calls. However in the OpenKODE core, macros or in-lines
+ may be used instead of a function call provided the following
+ rules are followed:
+ </p><div class="itemizedlist"><ul type="circle"><li><p>When calling a function, each argument must be evaluated
+ exactly once (although the order of evaluation is
+ undefined).</p></li><li><p>It must be possible to take the address of function.
+ </p></li></ul></div></li><li><p>
+ Except in cases where macros are allowed, ensure the
+ <em class="glossterm">API</em> function
+ names exported by your lib & dll files match the function
+ names specified by the Khronos standard for the
+ <em class="glossterm">API</em> you are
+ implementing.
+ </p></li></ul></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="lpackaging"></a>Packaging</h5></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>OpenGL ES, EGL, OpenVG and OpenKODE entry points should
+ be packaged in separate libraries.</p></li><li><p>However to provide backward compatibility for existing
+ applications, two OpenGL ES 1.1 libraries should be provided:
+ one with and one without the EGL entry points.</p><p>
+ <span class="emphasis"><em>Note: There are extant implementations of the dual
+ OpenGL ES libraries demonstrating this is possible on Symbian,
+ GNU/Linux, Win32 and WinCE.</em></span>
+ </p><p>For OpenGL ES 2.x, only a library without EGL entry points
+ is needed.</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="lnaming"></a>Naming</h5></div></div></div><p>Khronos recommends the library names shown in the following
+ table: </p><div class="table"><a name="id4786950"></a><p class="title"><b>Table 2. Recommended Library Names</b></p><table summary="Recommended Library Names" border="1"><colgroup><col align="left"><col align="left"></colgroup><thead><tr><th align="left"> API/Entry Points </th><th align="left"> Name </th></tr></thead><tbody><tr><td align="left"> EGL </td><td align="left">
+ <code class="filename">libEGL.{lib,dll}</code>
+ </td></tr><tr><td align="left"> OpenGL ES 1.x with EGL (Common Profile)</td><td align="left">
+ <code class="filename">libGLES_CM.{lib,dll}</code>
+ <sup>[<a name="fnreq" href="#ftn.fnreq">1</a>]</sup>
+ <sup>[<a name="fndepr" href="#ftn.fndepr">2</a>]</sup>
+ </td></tr><tr><td align="left"> OpenGL ES 1.x with EGL (Lite Profile) </td><td align="left">
+ <code class="filename">libGLES_CL.{lib,dll}</code>
+ <sup>[<a href="#ftn.fnreq">1</a>]</sup>
+ <sup>[<a href="#ftn.fndepr">2</a>]</sup>
+ </td></tr><tr><td align="left"> OpenGL ES 1.x without EGL </td><td align="left">
+ <code class="filename">libGLESv1_C[LM].{lib,dll}</code>
+ <sup>[<a name="fnsprev" href="#ftn.fnsprev">3</a>]</sup>
+ </td></tr><tr><td align="left"> OpenGL ES 2.x without EGL </td><td align="left">
+ <code class="filename">libGLESv2.{lib,dll}</code>
+ </td></tr><tr><td align="left"> </td><td align="left">
+ <code class="filename">libGLUESv1.{lib,dll}</code>
+ <sup>[<a name="fnreserved" href="#ftn.fnreserved">4</a>]</sup>
+ </td></tr><tr><td align="left"> </td><td align="left">
+ <code class="filename">libGLUESv2.{lib,dll}</code>
+ <sup>[<a href="#ftn.fnreserved">4</a>]</sup>
+ </td></tr><tr><td align="left"> OpenKODE </td><td align="left">
+ <code class="filename">libKD{lib,dll}</code>
+ </td></tr><tr><td align="left"> OpenVG </td><td align="left">
+ <code class="filename">libOpenVG{lib,dll}</code>
+ </td></tr><tr><td align="left"> OpenVG Utilities (when present) </td><td align="left">
+ <code class="filename">libOpenVGU.{lib,dll}</code>
+ </td></tr></tbody></table><div class="footnotes"><div class="footnote"><p><sup>[<a name="ftn.fnreq" href="#fnreq">1</a>] </sup> These names are required for OpenGL ES 1.0
+ and the libraries must contain the EGL entry points
+ as detailed in Chapter 8,
+ <span class="emphasis"><em>Packaging</em></span>,
+ of the OpenGL ES 1.0 specification.</p></div><div class="footnote"><p><sup>[<a name="ftn.fndepr" href="#fndepr">2</a>] </sup> These names are deprecated for OpenGL ES 1.1
+ and beyond and should only be used for a library
+ that includes the EGL entry points in order to support
+ legacy applications. </p></div><div class="footnote"><p><sup>[<a name="ftn.fnsprev" href="#fnsprev">3</a>] </sup>
+ <span class="emphasis"><em>The OpenGL ES 1.1 specification at revision 1.1.09
+ was updated to specify these alternate names for GLES
+ libraries that do not contain the EGL entry points.
+ </em></span>
+ </p></div><div class="footnote"><p><sup>[<a name="ftn.fnreserved" href="#fnreserved">4</a>] </sup>These names are reserved for future use by the
+ Khronos Group.</p></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="notes2"></a>Notes </h5></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>The extensions
+ <code class="filename">.lib</code>
+ & <code class="filename">.dll</code>
+ are allowed to vary by platform. On GNU/Linux for example
+ they should be .a and .so to match that platform's
+ conventions.</em></span></p></li></ul></div></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id4787332"></a>Acknowledgements</h2></div></div></div><p class="ackno">
+ <p>Thanks to all the members of the Khronos Group for their input
+ and in particular to the following:
+ </p>
+ <table class="simplelist" border="0" summary="Simple list"><tr><td>
+ <span class="othercredit"><span class="firstname">Petri</span> <span class="surname">Kero</span></span>
+ </td></tr><tr><td>
+ <span class="othercredit"><span class="firstname">Jon</span> <span class="surname">Leech</span></span>
+ </td></tr><tr><td>
+ <span class="othercredit"><span class="firstname">Robert</span> <span class="surname">Palmer</span></span>
+ </td></tr><tr><td>
+ <span class="othercredit"><span class="firstname">Jani</span> <span class="surname">Vaarala</span></span>
+ </td></tr><tr><td>
+ <span class="othercredit"><span class="firstname">Hans-Martin</span> <span class="surname">Will</span></span>
+ </td></tr></table>
+ </p></div><div class="glossary"><div class="titlepage"><div><div><h2 class="title"><a name="id4787444"></a>Glossary</h2></div></div></div><dl><dt><a name="gls_abi"></a>Application Binary Interface (ABI)</dt><dd><p>
+ The low-level interface between a compiled application program and the
+ operating system or its libraries.
+ </p></dd><dt><a name="gls_api"></a>Application Programming Interface (API)</dt><dd><p>
+ The source-code level interface between an application program
+ and the operating system or its libraries.
+ </p></dd><dt><a name="gls_implementer"></a>Implementer</dt><dd><p>
+ A company or person who implements a Khronos API.
+ </p></dd><dt><a name="gls_mfc"></a>Microsoft Foundation Classes (MFC)</dt><dd><p>
+ A set of C++ utility classes provided by Microsoft Corporation.
+ </p></dd><dt><a name="gls_vendor"></a>Platform Vendor (Vendor)</dt><dd><p>
+ A company providing an operating system platform that includes an
+ <em class="glossterm">ABI</em>
+ specification for one or more Khronos APIs. E.g., Qualcomm (OpenGL ES
+ on BREW) and Symbian (OpenGL ES on Symbian OS). A Vendor may also be
+ an <em class="glossterm">Implementer.</em>
+ </p></dd></dl></div></div></body></html>