| <refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglBindTexImage"> | 
 |     <info> | 
 |          <copyright> | 
 |              <year>2003-2014</year> | 
 |              <holder>The Khronos Group Inc.</holder> | 
 |          </copyright> | 
 |     </info> | 
 |     <refmeta> | 
 |         <refentrytitle>eglBindTexImage</refentrytitle> | 
 |         <manvolnum>3G</manvolnum> | 
 |     </refmeta> | 
 |     <refnamediv> | 
 |         <refname>eglBindTexImage</refname> | 
 |         <refpurpose> | 
 |             Defines a two-dimensional texture image | 
 |         </refpurpose> | 
 |     </refnamediv> | 
 |     <refsynopsisdiv> | 
 |         <title>C Specification</title> | 
 |         <funcsynopsis> | 
 |             <funcprototype> | 
 |                 <funcdef>EGLBoolean <function>eglBindTexImage</function></funcdef> | 
 |                 <paramdef>EGLDisplay <parameter>display</parameter></paramdef> | 
 |                 <paramdef>EGLSurface <parameter>surface</parameter></paramdef> | 
 |                 <paramdef>EGLint <parameter>buffer</parameter></paramdef> | 
 |             </funcprototype> | 
 |         </funcsynopsis> | 
 |     </refsynopsisdiv> | 
 |     <refsect1 xml:id="parameters"><title>Parameters</title> | 
 |         <variablelist> | 
 |             <varlistentry> | 
 |                 <term><parameter>display</parameter></term> | 
 |                 <listitem><para>Specifies the EGL display connection.</para></listitem> | 
 |             </varlistentry> | 
 |             <varlistentry> | 
 |                 <term><parameter>surface</parameter></term> | 
 |                 <listitem> | 
 |                     <para> | 
 |                         Specifies the EGL surface. | 
 |                     </para> | 
 |                 </listitem> | 
 |             </varlistentry> | 
 |             <varlistentry> | 
 |                 <term><parameter>buffer</parameter></term> | 
 |                 <listitem><para>Specifies the texture image data.</para></listitem> | 
 |             </varlistentry> | 
 |         </variablelist> | 
 |     </refsect1> | 
 |     <refsect1 xml:id="description"><title>Description</title> | 
 |         <para> | 
 |             The texture image consists of the image data in <parameter>buffer</parameter> for the specified surface, and need not be copied. | 
 |         </para> | 
 |         <para> | 
 |             The texture target, the texture format and the size of the texture components are derived from | 
 |             attributes of the specified surface, which must be a pbuffer supporting one of the | 
 |             <constant>EGL_BIND_TO_TEXTURE_RGB</constant> or <constant>EGL_BIND_TO_TEXTURE_RGBA</constant> attributes. | 
 |         </para> | 
 |         <para> | 
 |             The pbuffer attribute <constant>EGL_TEXTURE_FORMAT</constant> determines the base internal format | 
 |             of the texture. | 
 |         </para> | 
 |         <para> | 
 |             The texture target is derived from the <constant>EGL_TEXTURE_TARGET</constant> attribute of surface. | 
 |             If the attribute value is <constant>EGL_TEXTURE_2D</constant>, then <parameter>buffer</parameter> defines a texture for | 
 |             the two-dimensional texture object which is bound to the current context (hereafter | 
 |             referred to as the current texture object). | 
 |         </para> | 
 |         <para> | 
 |             If <parameter>display</parameter> and <parameter>surface</parameter> are the display and surface for the calling thread's current | 
 |             context, <function>eglBindTexImage</function> performs an implicit <citerefentry><refentrytitle>glFlush</refentrytitle></citerefentry>. | 
 |             For other surfaces, <function>eglBindTexImage</function> waits for all effects from previously issued OpenGL ES commands | 
 |             drawing to the surface to complete before defining the texture image, as | 
 |             though <citerefentry><refentrytitle>glFinish</refentrytitle></citerefentry>  were called on the last context to which that surface were bound. | 
 |         </para> | 
 |         <para> | 
 |             After <function>eglBindTexImage</function> is called, the specified surface is no longer available | 
 |             for reading or writing. Any read operation, such as <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry> or | 
 |             <citerefentry><refentrytitle>eglCopyBuffers</refentrytitle></citerefentry>, which reads values from any of the surface's color buffers or ancillary | 
 |             buffers will produce indeterminate results. In addition, draw operations that are | 
 |             done to the surface before its color buffer is released from the texture produce indeterminate | 
 |             results. Specifically, if the surface is current to a context and thread | 
 |             then rendering commands will be processed and the context state will be updated, | 
 |             but the surface may or may not be written. | 
 |         </para> | 
 |         <para> | 
 |             Texture mipmap levels are automatically generated when all of the following | 
 |             conditions are met while calling <function>eglBindTexImage</function>: | 
 |         </para> | 
 |         <itemizedlist> | 
 |         <listitem> | 
 |         <para> | 
 |             The <constant>EGL_MIPMAP_TEXTURE</constant> attribute of the pbuffer being bound is | 
 |             <constant>EGL_TRUE</constant>. | 
 |         </para> | 
 |         </listitem> | 
 |         <listitem> | 
 |         <para> | 
 |             The OpenGL ES texture parameter <constant>GL_GENERATE_MIPMAP</constant> is <constant>GL_TRUE</constant> for | 
 |             the currently bound texture. | 
 |         </para> | 
 |         </listitem> | 
 |         <listitem> | 
 |         <para> | 
 |             The value of the <constant>EGL_MIPMAP_LEVEL</constant> attribute of the pbuffer being bound is | 
 |             equal to the value of the texture parameter <constant>GL_TEXTURE_BASE_LEVEL</constant>. | 
 |             In this case, additional mipmap levels are generated as described in section 3.8 | 
 |             of the OpenGL ES 1.1 Specification. | 
 |         </para> | 
 |         </listitem> | 
 |         </itemizedlist> | 
 |         <para> | 
 |             In this case, additional mipmap levels are generated as described in section 3.8 | 
 |             of the OpenGL ES 1.1 Specification. | 
 |         </para> | 
 |     </refsect1> | 
 |     <refsect1 xml:id="notes"><title>Notes</title> | 
 |         <para> | 
 |             <citerefentry><refentrytitle>eglSwapBuffers</refentrytitle></citerefentry> has no effect if it is | 
 |             called on a bound surface. | 
 |         </para> | 
 |         <para> | 
 |             Any existing images associated with the different mipmap levels of the texture object | 
 |             are freed (it is as if <citerefentry><refentrytitle>glTexImage</refentrytitle></citerefentry> | 
 |             was called with an image of zero width). | 
 |         </para> | 
 |         <para> | 
 |             The color buffer is bound to a texture object. If the texture object is | 
 |             shared between contexts, then the color buffer is also shared. If a texture object is | 
 |             deleted before <citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry> is called, then the color buffer is released and | 
 |             the surface is made available for reading and writing. | 
 |         </para> | 
 |         <para> | 
 |             It is not an error to call <citerefentry><refentrytitle>glTexImage2D</refentrytitle></citerefentry> or | 
 |             <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry> to replace an | 
 |             image of a texture object that has a color buffer bound to it. However, these calls | 
 |             will cause the color buffer to be released back to the surface and new memory will | 
 |             be allocated for the texture. Note that the color buffer is released even if the image | 
 |             that is being defined is a mipmap level that was not defined by the color buffer. | 
 |         </para> | 
 |         <para> | 
 |             <function>eglBindTexImage</function> is ignored if there is no current rendering context. | 
 |         </para> | 
 |     </refsect1> | 
 |     <refsect1 xml:id="errors"><title>Errors</title> | 
 |         <para> | 
 |             <constant>EGL_BAD_ACCESS</constant> is generated if | 
 |             <parameter>buffer</parameter> is already bound to a texture. | 
 |         </para> | 
 |         <para> | 
 |             <constant>EGL_BAD_MATCH</constant> is generated if the | 
 |             surface attribute <constant>EGL_TEXTURE_FORMAT</constant> is | 
 |             set to <constant>EGL_NO_TEXTURE</constant>. | 
 |         </para> | 
 |         <para> | 
 |             <constant>EGL_BAD_MATCH</constant> is generated if | 
 |             <parameter>buffer</parameter> is not a valid buffer | 
 |             (currently only <constant>EGL_BACK_BUFFER</constant> may be | 
 |             specified). | 
 |         </para> | 
 |         <para> | 
 |             <constant>EGL_BAD_SURFACE</constant> is generated if | 
 |             <parameter>surface</parameter> is not an EGL surface, or is | 
 |             not a pbuffer surface supporting texture binding. | 
 |         </para> | 
 |     </refsect1> | 
 |     <refsect1 xml:id="seealso"><title>See Also</title> | 
 |         <para> | 
 |             <citerefentry><refentrytitle>eglReleaseTexImage</refentrytitle></citerefentry> | 
 |         </para> | 
 |     </refsect1> | 
 |     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/> | 
 | </refentry> |