<?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">eglQueryString - 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="eglQueryString">
      <div class="titlepage"/>
      <div class="refnamediv">
        <h2>Name</h2>
        <p>eglQueryString — 
            return a string describing properties of the EGL client or of an
            <abbr class="acronym">EGL</abbr> display connection
        </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">char const * <strong class="fsfunc">eglQueryString</strong>(</code>
              </td>
              <td>EGLDisplay <var class="pdparam">display</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLint <var class="pdparam">name</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>name</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>
                        Specifies a symbolic constant, one of
                        <code class="constant">EGL_CLIENT_APIS</code>,
                        <code class="constant">EGL_VENDOR</code>,
                        <code class="constant">EGL_VERSION</code>, or
                        <code class="constant">EGL_EXTENSIONS</code>.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1" id="description">
        <h2>Description</h2>
        <p>
            <code class="function">eglQueryString</code> returns a pointer to a
            static, zero-terminated string describing properties of the EGL
            client or of an EGL display connection.
            <em class="parameter"><code>name</code></em> may be one of the following:
        </p>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">
                <code class="constant">EGL_CLIENT_APIS</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns a string describing which client rendering
                    APIs are supported. The string contains a
                    space-separated list of API names. The list must
                    include at least one of <code class="code">OpenGL</code>,
                    <code class="code">OpenGL_ES</code>, or <code class="code">OpenVG</code>.
                    These strings correspond respectively to values
                    <code class="constant">EGL_OPENGL_API</code>,
                    <code class="constant">EGL_OPENGL_ES_API</code>, and
                    <code class="constant">EGL_OPENVG_API</code> of the
                    <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</span></span></a>,
                    <em class="parameter"><code>api</code></em> argument.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_VENDOR</code>
              </span>
            </dt>
            <dd>
              <p>
                    Returns the name of the vendor responsible for this EGL
                    implementation. The format and contents of the string
                    are implementation-dependent.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_VERSION</code>
              </span>
            </dt>
            <dd>
              <p>
                        Returns a version or release number. The
                        <code class="constant">EGL_VERSION</code> string is laid out
                        as follows:
                    </p>
              <p>
                        <em class="replaceable"><code>major_version</code></em>.<em class="replaceable"><code>minor_version</code></em>
                        space
                        <em class="replaceable"><code>vendor_specific_info</code></em>
                    </p>
              <p>
                        Both the major and minor portions of the version
                        number are numeric. Their values must match the
                        <em class="parameter"><code>major</code></em> and
                        <em class="parameter"><code>minor</code></em> values returned by
                        <a class="citerefentry" href="eglInitialize.xhtml"><span class="citerefentry"><span class="refentrytitle">eglInitialize</span></span></a>.
                    </p>
              <p>
                        The vendor-specific information is optional; if
                        present, its format and contents are
                        implementation-specific.
                    </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_EXTENSIONS</code>
              </span>
            </dt>
            <dd>
              <p>
                        Returns a space separated list of supported
                        extensions to EGL. If there are no extensions, then
                        the empty string is returned.
                    </p>
              <p>
                        If <em class="parameter"><code>display</code></em> is
                        <code class="constant">EGL_NO_DISPLAY</code>, then the
                        <code class="constant">EGL_EXTENSIONS</code> string describes
                        the set of supported <em class="firstterm">client
                        extensions</em>. If
                        <em class="parameter"><code>display</code></em> is a valid,
                        initialized display, then the
                        <code class="constant">EGL_EXTENSIONS</code> string describes
                        the set of <em class="firstterm">display extensions</em>
                        supported by that display. The set of supported
                        client extensions is disjoint from the set of
                        extensions supported by any given display.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1" id="notes">
        <h2>Notes</h2>
        <p>
            <code class="constant">EGL_CLIENT_APIS</code> is supported only if
            the EGL version is 1.2 or greater.
        </p>
        <p>
            A <em class="parameter"><code>display</code></em> of
            <code class="constant">EGL_NO_DISPLAY</code> is supported only if the EGL
            version is 1.5 or greater.
        </p>
      </div>
      <div class="refsect1" id="errors">
        <h2>Errors</h2>
        <p>
            <code class="constant">NULL</code> is returned on failure.
        </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,
            unless <em class="parameter"><code>display</code></em> is
            <code class="constant">EGL_NO_DISPLAY</code> and
            <em class="parameter"><code>name</code></em> is
            <code class="constant">EGL_EXTENSIONS</code>.
        </p>
        <p>
            <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
            <em class="parameter"><code>display</code></em> is a valid but uninitialized
            EGLDisplay.
        </p>
        <p>
            <code class="constant">EGL_BAD_PARAMETER</code> is generated if
            <em class="parameter"><code>name</code></em> is not an accepted value.
        </p>
      </div>
      <div class="refsect1" id="seealso">
        <h2>See Also</h2>
        <p>
            <a class="citerefentry" href="eglBindAPI.xhtml"><span class="citerefentry"><span class="refentrytitle">eglBindAPI</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>
