<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>eglCreatePbufferSurface</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /></head><body><div class="refentry" lang="en" xml:lang="en"><a id="eglCreatePbufferSurface"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>eglCreatePbufferSurface — 
            create a new <acronym class="acronym">EGL</acronym> pixel buffer surface
        </p></div><div class="refsynopsisdiv"><h2>C Specification</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">EGLSurface <b class="fsfunc">eglCreatePbufferSurface</b>(</code></td><td>EGLDisplay <var class="pdparam">display</var>, </td></tr><tr><td> </td><td>EGLConfig <var class="pdparam">config</var>, </td></tr><tr><td> </td><td>EGLint const * <var class="pdparam">attrib_list</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="parameters"></a><h2>Parameters</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>display</code></em></span></dt><dd><p>Specifies the EGL display connection.</p></dd><dt><span class="term"><em class="parameter"><code>config</code></em></span></dt><dd><p>
                    Specifies the EGL frame buffer configuration that defines the
                    frame buffer resource available to the surface.
                </p></dd><dt><span class="term"><em class="parameter"><code>attrib_list</code></em></span></dt><dd><p>
                    Specifies the pixel buffer surface attributes.
                    May be <code class="constant">NULL</code> or empty
                    (first attribute is <code class="constant">EGL_NONE</code>).
                    Accepted attributes are
                    <code class="constant">EGL_WIDTH</code>,
                    <code class="constant">EGL_HEIGHT</code>, and
                    <code class="constant">EGL_LARGEST_PBUFFER</code>.
                </p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p>
            <code class="function">eglCreatePbufferSurface</code> creates an
            off-screen pixel buffer surface and returns its handle.
            If <code class="function">eglCreatePbufferSurface</code> fails to create a
            pixel buffer surface, <code class="constant">EGL_NO_SURFACE</code> is returned.
        </p><p>
            Any EGL rendering context that was created with respect to
            <em class="parameter"><code>config</code></em> can be used to render into the surface.
            Use <a class="citerefentry" href="eglMakeCurrent.xml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>
            to attach an EGL rendering context to the surface.
        </p><p>
            Use
            <a class="citerefentry" href="eglQuerySurface.xml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
            to retrieve the dimensions of the allocated pixel buffer surface or
            the ID of <em class="parameter"><code>config</code></em>.
        </p><p>
            Use <a class="citerefentry" href="eglDestroySurface.xml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>
            to destroy the surface.
        </p><p>
            The pixel buffer surface attributes are specified as a list of
            attribute value pairs, terminated with <code class="constant">EGL_NONE</code>.
            The accepted attributes for an EGL pixel buffer surface are:
        </p><div class="variablelist"><dl><dt><span class="term"><code class="constant">EGL_WIDTH</code></span></dt><dd><p>
                        Specifies the required width of the pixel buffer surface.
                        The default value is <code class="constant">0</code>.
                    </p></dd><dt><span class="term"><code class="constant">EGL_HEIGHT</code></span></dt><dd><p>
                        Specifies the required height of the pixel buffer surface.
                        The default value is <code class="constant">0</code>.
                    </p></dd><dt><span class="term"><code class="constant">EGL_LARGEST_PBUFFER</code></span></dt><dd><p>
                        Requests the largest available pixel buffer surface when the allocation would otherwise fail.
                        Use <a class="citerefentry" href="eglQuerySurface.xml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
                        to retrieve the dimensions of the allocated pixel buffer.
                        The default value is <code class="constant">EGL_FALSE</code>.
                    </p></dd><dt><span class="term"><code class="constant">EGL_TEXTURE_FORMAT</code></span></dt><dd><p>
                        Specifies the format of the texture that will be created when a pbuffer is bound to a texture map.
                        Possible values are
                        <code class="constant">EGL_NO_TEXTURE</code>,
                        <code class="constant">EGL_TEXTURE_RGB</code>, and
                        <code class="constant">EGL_TEXTURE_RGBA</code>.
                        The default value is <code class="constant">EGL_NO_TEXTURE</code>.
                    </p></dd><dt><span class="term"><code class="constant">EGL_TEXTURE_TARGET</code></span></dt><dd><p>
                        Specifies the target for the texture that will be created when the pbuffer is created
                        with a texture format of <code class="constant">EGL_TEXTURE_RGB</code> or <code class="constant">EGL_TEXTURE_RGBA</code>.
                        Possible values are
                        <code class="constant">EGL_NO_TEXTURE</code>, or
                        <code class="constant">EGL_TEXTURE_2D</code>.
                        The default value is <code class="constant">EGL_NO_TEXTURE</code>.
                    </p></dd><dt><span class="term"><code class="constant">EGL_MIPMAP_TEXTURE</code></span></dt><dd><p>
                        Specifies whether storage for mipmaps should be allocated.
                        Space for mipmaps will be set aside if the attribute value is <code class="constant">EGL_TRUE</code>
                        and <code class="constant">EGL_TEXTURE_FORMAT</code> is not <code class="constant">EGL_NO_TEXTURE</code>.
                        The default value is <code class="constant">EGL_FALSE</code>.
                    </p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="notes"></a><h2>Notes</h2><p>
            If the value of <em class="parameter"><code>config</code></em> attribute <code class="constant">EGL_TEXTURE_FORMAT</code> is not <code class="constant">EGL_NO_TEXTURE</code>,
            then the pbuffer width and height specify the size of the level zero texture image
        </p><p>
            If <code class="constant">EGL_LARGEST_PBUFFER</code> is specified and if the pbuffer will be used as a texture
            (i.e. the value of <code class="constant">EGL_TEXTURE_TARGET</code> is <code class="constant">EGL_TEXTURE_2D</code>,
            and the value of <code class="constant">EGL_TEXTURE FORMAT</code> is <code class="constant">EGL_TEXTURE_RGB</code>
            or <code class="constant">EGL_TEXTURE_RGBA</code>), then the aspect ratio will be preserved and the new width
            and height will be valid sizes for the texture target (e.g. if the underlying OpenGL ES implementation
            does not support non-power-of-two textures, both the width and height will be a power of 2).
        </p><p>
            The contents of the depth and stencil buffers may not be preserved when rendering
            a texture to the pbuffer and switching which image of the texture is rendered
            to (e.g., switching from rendering one mipmap level to rendering another).
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="errors"></a><h2>Errors</h2><p>
            <code class="constant">EGL_NO_SURFACE</code> is returned if creation of
            the context fails.
        </p><p>
            <code class="constant">EGL_BAD_DISPLAY</code> is generated if
            <em class="parameter"><code>display</code></em> is not an EGL display connection.
        </p><p>
            <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
            <em class="parameter"><code>display</code></em> has not been initialized.
        </p><p>
            <code class="constant">EGL_BAD_CONFIG</code> is generated if
            <em class="parameter"><code>config</code></em> is not an EGL frame buffer configuration.
        </p><p>
            <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
            <em class="parameter"><code>attrib_list</code></em> contains an invalid pixel buffer
            attribute or if an attribute value is not recognized or out of range.
        </p><p>
            <code class="constant">EGL_BAD_ALLOC</code> is generated if there are not
            enough resources to allocate the new surface.
        </p><p>
            <code class="constant">EGL_BAD_MATCH</code> is generated if
            <em class="parameter"><code>config</code></em> does not support rendering to pixel buffers
            (the <code class="constant">EGL_SURFACE_TYPE</code> attribute does not contain
            <code class="constant">EGL_PBUFFER_BIT</code>).
        </p><p>
            <code class="constant">EGL_BAD_VALUE</code> is generated if
            The <code class="constant">EGL_TEXTURE_FORMAT</code> attribute is not <code class="constant">EGL_NO_TEXTURE</code>, and
            <code class="constant">EGL_WIDTH</code> and/or <code class="constant">EGL_HEIGHT</code> specify an invalid size
            (e.g., the texture size is not a power of 2, and the underlying OpenGL ES
            implementation does not support non-power-of-two textures).
        </p><p>
            <code class="constant">EGL_BAD_VALUE</code> can also be generated if
            The <code class="constant">EGL_TEXTURE_FORMAT</code> attribute
            is <code class="constant">EGL_NO_TEXTURE</code>, and <code class="constant">EGL_TEXTURE_TARGET</code> is something other
            than <code class="constant">EGL_NO_TEXTURE</code>; or, <code class="constant">EGL_TEXTURE_FORMAT</code> is something other than
            <code class="constant">EGL_NO_TEXTURE</code>, and <code class="constant">EGL_TEXTURE_TARGET</code> is <code class="constant">EGL_NO_TEXTURE</code>.
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="seealso"></a><h2>See Also</h2><p>
            <a class="citerefentry" href="eglDestroySurface.xml"><span class="citerefentry"><span class="refentrytitle">eglDestroySurface</span></span></a>,
            <a class="citerefentry" href="eglChooseConfig.xml"><span class="citerefentry"><span class="refentrytitle">eglChooseConfig</span></span></a>,
            <a class="citerefentry" href="eglGetConfigs.xml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
            <a class="citerefentry" href="eglMakeCurrent.xml"><span class="citerefentry"><span class="refentrytitle">eglMakeCurrent</span></span></a>,
            <a class="citerefentry" href="eglQuerySurface.xml"><span class="citerefentry"><span class="refentrytitle">eglQuerySurface</span></span></a>
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="copyright"></a><h2>Copyright</h2><p>
            Copyright <span class="trademark"></span>© 2003-2004
            Silicon Graphics, Inc. This document is licensed under the SGI
            Free Software B License. For details, see
            <a class="ulink" href="http://oss.sgi.com/projects/FreeB/" target="_top">http://oss.sgi.com/projects/FreeB/</a>.
        </p></div></div></body></html>

