| <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> |