<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title xmlns:xlink="http://www.w3.org/1999/xlink">eglSwapBuffers - EGL Reference Pages</title>
    <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"/>
  </head>
  <body>
    <header/>
    <div class="refentry" id="eglSwapBuffers">
      <div class="titlepage"/>
      <div class="refnamediv">
        <h2>Name</h2>
        <p>eglSwapBuffers — 
            post <abbr class="acronym">EGL</abbr> surface color buffer to a native window
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2>C Specification</h2>
        <div class="funcsynopsis">
          <table style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
            <tr>
              <td>
                <code class="funcdef">EGLBoolean <strong class="fsfunc">eglSwapBuffers</strong>(</code>
              </td>
              <td>EGLDisplay <var class="pdparam">display</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLSurface <var class="pdparam">surface</var><code>)</code>;</td>
            </tr>
          </table>
          <div class="funcprototype-spacer"> </div>
        </div>
      </div>
      <div class="refsect1" id="parameters">
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <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>surface</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>
                        Specifies the EGL drawing surface whose buffers are to be swapped.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1" id="description">
        <h2>Description</h2>
        <p>
            If <em class="parameter"><code>surface</code></em> is a window surface,
            <code class="function">eglSwapBuffers</code> posts its color buffer
            to the associated native window.
        </p>
        <p>
            The contents of ancillary buffers are always undefined after
            calling <code class="function">eglSwapBuffers</code>. The contents of
            the color buffer are left unchanged if the value of the
            <code class="constant">EGL_SWAP_BEHAVIOR</code> attribute of
            <em class="parameter"><code>surface</code></em> is
            <code class="constant">EGL_BUFFER_PRESERVED</code>, and are undefined
            if the value is <code class="constant">EGL_BUFFER_DESTROYED</code>.
            The value of <code class="constant">EGL_SWAP_BEHAVIOR</code> can be
            set for some surfaces using
            <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
        </p>
        <p>
            <code class="function">eglSwapBuffers</code> performs an implicit
            flush operation on the context (<code class="function">glFlush</code>
            for an OpenGL ES or OpenGL context,
            <code class="function">vgFlush</code> for an OpenVG context) bound to
            <em class="parameter"><code>surface</code></em> before swapping. Subsequent
            client API commands may be issued on that context
            immediately after calling
            <code class="function">eglSwapBuffers</code>, but are not executed
            until the buffer exchange is completed.
        </p>
        <p>
            If <em class="parameter"><code>surface</code></em> is a pixel buffer or a pixmap,
            <code class="function">eglSwapBuffers</code>
            has no effect, and no error is generated.
        </p>
      </div>
      <div class="refsect1" id="notes">
        <h2>Notes</h2>
        <p>
            Attribute <code class="constant">EGL_SWAP_BEHAVIOR</code> is
            supported only if the EGL version is 1.2 or greater. In
            earlier versions, behavior is as though the attribute
            exists, and always has the value
            <code class="constant">EGL_BUFFER_DESTROYED</code>.
        </p>
        <p>
            The EGL 1.4 specification was updated to acknowledge that
            ancillary buffers are not necessarily preserved after a
            swap, and that the <code class="constant">EGL_SWAP_BEHAVIOR</code>
            attribute applies only to the color buffer. This change in
            the specification acknowledged the behavior of many shipping
            implementations, and is not intended to result in behavior
            changes in any existing implementation. Applications which
            require preservation of ancillary buffers across a swap
            should be aware that not all implementations can preserve
            them, and that EGL 1.4 has no way to query whether or not
            they are preserved.
        </p>
      </div>
      <div class="refsect1" id="errors">
        <h2>Errors</h2>
        <p>
            <code class="constant">EGL_FALSE</code> is returned if swapping of the
            surface buffers fails, <code class="constant">EGL_TRUE</code> otherwise.
        </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_SURFACE</code> is generated if
            <em class="parameter"><code>surface</code></em> is not an EGL drawing surface.
        </p>
        <p>
            <code class="constant">EGL_CONTEXT_LOST</code> is generated if a power management
            event has occurred. The application must destroy all contexts and
            reinitialise OpenGL ES state and objects to continue rendering.
        </p>
      </div>
      <div class="refsect1" id="seealso">
        <h2>See Also</h2>
        <p>
            <a class="citerefentry" href="glFlush.xhtml"><span class="citerefentry"><span class="refentrytitle">glFlush</span></span></a>,
            <a class="citerefentry" href="eglCopyBuffers.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCopyBuffers</span></span></a>
        </p>
      </div>
      <p>
    </p>
      <div class="refsect3" id="copyright">
        <img src="KhronosLogo.jpg"/>
        <p>
            Copyright © 2003-2014 The Khronos Group Inc.
            Permission is hereby granted, free of charge, to any person obtaining a
            copy of this software and/or associated documentation files (the
            "Materials"), to deal in the Materials without restriction, including
            without limitation the rights to use, copy, modify, merge, publish,
            distribute, sublicense, and/or sell copies of the Materials, and to
            permit persons to whom the Materials are furnished to do so, subject to
            the condition that this copyright notice and permission notice shall be included
            in all copies or substantial portions of the Materials.
        </p>
      </div>
      <p>
</p>
    </div>
    <footer/>
  </body>
</html>
