<?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">eglMakeCurrent - EGL Reference Pages</title>
    <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
    <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
  </head>
  <body>
    <header/>
    <div class="refentry" id="eglMakeCurrent">
      <div class="titlepage"/>
      <div class="refnamediv">
        <h2>Name</h2>
        <p>eglMakeCurrent — 
            attach an EGL rendering context to EGL surfaces
        </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">eglMakeCurrent</strong>(</code>
              </td>
              <td>EGLDisplay <var class="pdparam">display</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLSurface <var class="pdparam">draw</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLSurface <var class="pdparam">read</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLContext <var class="pdparam">context</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 <abbr class="acronym">EGL</abbr> display connection.</p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>draw</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>Specifies the <abbr class="acronym">EGL</abbr> draw surface.</p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>read</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>Specifies the <abbr class="acronym">EGL</abbr> read surface.</p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>context</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>Specifies the <abbr class="acronym">EGL</abbr> rendering context
                        to be attached to the surfaces.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1" id="description">
        <h2>Description</h2>
        <p>
            <code class="function">eglMakeCurrent</code> binds <em class="parameter"><code>context</code></em>
            to the current rendering thread and to the <em class="parameter"><code>draw</code></em>
            and <em class="parameter"><code>read</code></em> surfaces.
        </p>
        <p>
            For an OpenGL or OpenGL ES context, <em class="parameter"><code>draw</code></em>
            is used for all operations except for any pixel data read back or copied
            (<a class="citerefentry" href="glReadPixels.xhtml"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
            <a class="citerefentry" href="glCopyTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>, and
            <a class="citerefentry" href="glCopyTexSubImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>),
            which is taken from the frame buffer values of
            <em class="parameter"><code>read</code></em>. Note that the same
            <span class="type">EGLSurface</span> may be specified for both draw and read.
        </p>
        <p>
            For an OpenVG context, the same <span class="type">EGLSurface</span> must be
            specified for both <em class="parameter"><code>draw</code></em> and
            <em class="parameter"><code>read</code></em>.
        </p>
        <p>
            If the calling thread has already a current rendering context of
            the same client API type as <em class="parameter"><code>context</code></em>, then
            that context is flushed and marked as no longer current.
            <em class="parameter"><code>context</code></em> is then made the current context
            for the calling thread. For purposes of
            <code class="function">eglMakeCurrent</code>, the client API type of all
            OpenGL ES and OpenGL contexts is considered the same. In other
            words, if any OpenGL ES context is currently bound and
            <em class="parameter"><code>context</code></em> is an OpenGL context, or if any
            OpenGL context is currently bound and
            <em class="parameter"><code>context</code></em> is an OpenGL ES context, the
            currently bound context will be made no longer current and
            <em class="parameter"><code>context</code></em> will be made current.
        </p>
        <p>
            OpenGL and OpenGL ES buffer mappings created by e.g.
            <code class="function">glMapBuffer</code> are not affected by
            <code class="function">eglMakeCurrent</code>; they persist whether the
            context owning the buffer is current or not.
        </p>
        <p>
            If <em class="parameter"><code>draw</code></em> is destroyed after
            <code class="function">eglMakeCurrent</code> is called, then subsequent
            rendering commands will be processed and the context state will
            be updated, but the surface contents become undefined. If
            <em class="parameter"><code>read</code></em> is destroyed after
            <code class="function">eglMakeCurrent</code> then pixel values
            <em class="parameter"><code>read</code></em> from the framebuffer (e.g., as
            result of calling glReadPixels) are undefined. If a native
            window or pixmap underlying the <em class="parameter"><code>draw</code></em> or
            <em class="parameter"><code>read</code></em> surfaces is destroyed, rendering and
            <em class="parameter"><code>read</code></em>back are handled as above.
        </p>
        <p>
            To release the current context without assigning a new one, set
            <em class="parameter"><code>context</code></em> to
            <code class="constant">EGL_NO_CONTEXT</code> and set
            <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> to
            <code class="constant">EGL_NO_SURFACE</code> . The currently bound
            context for the client API specified by the current rendering
            API is flushed and marked as no longer current, and there will
            be no current context for that client API after
            <code class="function">eglMakeCurrent</code> returns. This is the only
            case in which <code class="function">eglMakeCurrent</code> respects the
            current rendering API. In all other cases, the client API
            affected is determined by <em class="parameter"><code>context</code></em>. This
            is the only case where an uninitialized display may be passed to
            <code class="function">eglMakeCurrent</code>.
        </p>
        <p>
            If ctx is not <code class="constant">EGL_NO_CONTEXT</code>, then both
            <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> must
            not be <code class="constant">EGL_NO_SURFACE</code> unless
            <em class="parameter"><code>context</code></em> is a context which supports being
            bound without read and draw surfaces. In this case the context
            is made current without a default framebuffer. The meaning of
            this is defined by the client API of the supporting context (see
            chapter 4 of the OpenGL 3.0 Specification, and the
            <code class="constant">GL_OES_surfaceless_context</code> OpenGL ES
            extension.).
        </p>
        <p>
            The first time a OpenGL or OpenGL ES context is made current the
            viewport and scissor dimensions are set to the size of the
            <em class="parameter"><code>draw</code></em> surface (as though
            <code class="function">glViewport</code>(0,0,w,h) and
            <code class="function">glScissor</code>(0,0,<em class="parameter"><code>w</code></em>,<em class="parameter"><code>h</code></em>)
            were called, where <em class="parameter"><code>w</code></em> and
            <em class="parameter"><code>h</code></em> are the width and height of the
            surface, respectively). However, the viewport and scissor
            dimensions are not modified when <em class="parameter"><code>context</code></em>
            is subsequently made current. The client is responsible for
            resetting the viewport and scissor in this case.
        </p>
        <p>
            The first time <em class="parameter"><code>context</code></em> is made current,
            if it is without a default framebuffer (e.g. both
            <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> are
            <code class="constant">EGL_NO_SURFACE</code> ), then the viewport and
            scissor regions are set as though
            <code class="function">glViewport</code>(0,0,0,0) and
            <code class="function">glScissor</code>(0,0,0,0) were called.
        </p>
        <p>
            Implementations may delay allocation of auxiliary buffers for a
            surface until they are required by a context (which may result
            in the <code class="constant">EGL_BAD_ALLOC</code> error described
            above). Once allocated, however, auxiliary buffers and their
            contents persist until a surface is deleted.
        </p>
        <p>
            Use
            <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
            <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>, and
            <a class="citerefentry" href="eglGetCurrentSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>
            to query the current rendering context and associated display connection and surfaces.
        </p>
      </div>
      <div class="refsect1" id="errors">
        <h2>Errors</h2>
        <p>
            If <em class="parameter"><code>draw</code></em> or <em class="parameter"><code>read</code></em>
            are not compatible with <em class="parameter"><code>context</code></em>, then an
            <code class="constant">EGL_BAD_MATCH</code> error is generated.
        </p>
        <p>
            If <em class="parameter"><code>context</code></em> is current to some other
            thread, or if either <em class="parameter"><code>draw</code></em> or
            <em class="parameter"><code>read</code></em> are bound to contexts in another
            thread, an <code class="constant">EGL_BAD_ACCESS</code> error is
            generated.
        </p>
        <p>
            If binding <em class="parameter"><code>context</code></em> would exceed the
            number of current contexts of that client API type supported by
            the implementation, an <code class="constant">EGL_BAD_ACCESS</code> error
            is generated.
        </p>
        <p>
            If either <em class="parameter"><code>draw</code></em> or
            <em class="parameter"><code>read</code></em> are pbuffers created with
            <code class="function">eglCreatePbufferFromClientBuffer</code>, and the
            underlying bound client API buffers are in use by the client API
            that created them, an <code class="constant">EGL_BAD_ACCESS</code> error
            is generated.
        </p>
        <p>
            If <em class="parameter"><code>context</code></em> is not a valid context and is
            not <code class="constant">EGL_NO_CONTEXT</code>, an
            <code class="constant">EGL_BAD_CONTEXT</code> error is generated.
        </p>
        <p>
            If either <em class="parameter"><code>draw</code></em> or
            <em class="parameter"><code>read</code></em> are not valid EGL surfaces and are
            not <code class="constant">EGL_NO_SURFACE</code>, an
            <code class="constant">EGL_BAD_SURFACE</code> error is generated.
        </p>
        <p>
            If <em class="parameter"><code>context</code></em> is
            <code class="constant">EGL_NO_CONTEXT</code> and either
            <em class="parameter"><code>draw</code></em> or <em class="parameter"><code>read</code></em> are
            not <code class="constant">EGL_NO_SURFACE</code>, an
            <code class="constant">EGL_BAD_MATCH</code> error is generated.
        </p>
        <p>
            If either of <em class="parameter"><code>draw</code></em> or
            <em class="parameter"><code>read</code></em> is a valid surface and the other is
            <code class="constant">EGL_NO_SURFACE</code>, an
            <code class="constant">EGL_BAD_MATCH</code> error is generated.
        </p>
        <p>
            If <em class="parameter"><code>context</code></em> does not support being bound
            without <em class="parameter"><code>read</code></em> and
            <em class="parameter"><code>draw</code></em> surfaces, and both
            <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em> are
            <code class="constant">EGL_NO_SURFACE</code>, an
            <code class="constant">EGL_BAD_MATCH</code> error is generated.
        </p>
        <p>
            If a native window underlying either <em class="parameter"><code>draw</code></em>
            or <em class="parameter"><code>read</code></em> is no longer valid, an
            <code class="constant">EGL_BAD_NATIVE_WINDOW</code> error is generated.
        </p>
        <p>
            If <em class="parameter"><code>draw</code></em> and <em class="parameter"><code>read</code></em>
            cannot fit into graphics memory simultaneously, an
            <code class="constant">EGL_BAD_MATCH</code> error is generated.
        </p>
        <p>
            If the previous context of the calling thread has unflushed
            commands, and the previous surface is no longer valid, an
            <code class="constant">EGL_BAD_CURRENT_SURFACE</code> error is generated.
        </p>
        <p>
            If the ancillary buffers for <em class="parameter"><code>draw</code></em> and
            <em class="parameter"><code>read</code></em> cannot be allocated, an
            <code class="constant">EGL_BAD_ALLOC</code> error is generated.
        </p>
        <p>
            If a power management event has occurred, an
            <code class="constant">EGL_CONTEXT_LOST</code> error is generated.
        </p>
        <p>
            If any of the following are true:

            </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem">
              <p>
                    <em class="parameter"><code>context</code></em> is not
                    <code class="constant">EGL_NO_CONTEXT</code>
                </p>
            </li>
            <li class="listitem">
              <p>
                    <em class="parameter"><code>read</code></em> is not
                    <code class="constant">EGL_NO_SURFACE</code>
                </p>
            </li>
            <li class="listitem">
              <p>
                    <em class="parameter"><code>draw</code></em> is not
                    <code class="constant">EGL_NO_SURFACE</code>
                </p>
            </li>
          </ul>
        </div>
        <p>

            then an <code class="constant">EGL_NOT_INITIALIZED</code> error is
            generated if <em class="parameter"><code>display</code></em> is a valid but
            uninitialized display.
        </p>
        <p>
            As with other commands taking <span class="type">EGLDisplay</span>
            parameters, if <em class="parameter"><code>display</code></em> is not a valid
            <span class="type">EGLDisplay</span> handle, an
            <code class="constant">EGL_BAD_DISPLAY</code> error is generated. (Some
            implementations have chosen to allow
            <code class="constant">EGL_NO_DISPLAY</code> as a valid
            <em class="parameter"><code>display</code></em> parameter for
            <code class="function">eglMakeCurrent</code>. This behavior is not
            portable to all EGL implementations, and should be considered as
            an undocumented vendor extension).
        </p>
      </div>
      <div class="refsect1" id="seealso">
        <h2>See Also</h2>
        <p>
            <a class="citerefentry" href="glReadPixels.xhtml"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
            <a class="citerefentry" href="glCopyTexImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexImage2D</span></span></a>,
            <a class="citerefentry" href="glCopyTexSubImage2D.xhtml"><span class="citerefentry"><span class="refentrytitle">glCopyTexSubImage2D</span></span></a>,
            <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
            <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
            <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
            <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
            <a class="citerefentry" href="eglGetCurrentContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentContext</span></span></a>,
            <a class="citerefentry" href="eglGetCurrentDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentDisplay</span></span></a>,
            <a class="citerefentry" href="eglGetCurrentSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetCurrentSurface</span></span></a>,
            <a class="citerefentry" href="eglGetDisplay.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetDisplay</span></span></a>,
            <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</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>
