<?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" /><link rel="stylesheet" type="text/css" href="opengl-man.css" /><title>gl_ViewportIndex - OpenGL Shading Language (GLSL)</title><meta name="generator" content="DocBook XSL Stylesheets V1.69.1" /></head><body><div class="refentry" lang="en" xml:lang="en"><a id="gl_ViewportIndex"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>gl_ViewportIndex — contains the index of the viewport to be used in viewport transformation and scissoring</p></div><div class="refsynopsisdiv"><h2>Declaration</h2><div class="funcsynopsis"><code class="function">out int gl_ViewportIndex; // Geometry stage</code></div><div class="funcsynopsis"><code class="function">in  int gl_ViewportIndex; // Fragment stage</code></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p>
            In the geometry language, <code class="function">gl_ViewportIndex</code> is used to specify the index
            of the viewport to which the next primitive emitted from the shader should be drawn. Primitives generated
            by the geometry shader will undergo viewport transformation and scissor testing using the viewport
            transformation and scissor rectangle selected by the value of <code class="function">gl_ViewportIndex</code>.
            The viewport index used will come from one of the vertices in the primitive being shaded. However, which
            vertex the viewport index comes from is implementation-defined, and so it is recommended to use the same
            viewport index for all vertices of a primitive. If a geometry shader does not assign a value to
            <code class="function">gl_ViewportIndex</code>, viewport transform and scissor rectangle zero will be used.
            If a geometry shader statically assigns a value to <code class="function">gl_ViewportIndex</code> and there
            is a path through the shader that does not assign a value to <code class="function">gl_ViewportIndex</code>,
            the value of <code class="function">gl_ViewportIndex</code> is undefined for executions of the shader that take
            that path.
        </p><p>
            In the fragment language, <code class="function">gl_ViewportIndex</code> will have the same value that was written to the 
            output variable <code class="function">gl_ViewportIndex</code> in the geometry stage.  If the geometry stage does not dynamically
            assign to <code class="function">gl_ViewportIndex</code>, the value of <code class="function">gl_ViewportIndex</code> in the fragment shader will be undefined. If
            the geometry stage makes no static assignment to <code class="function">gl_ViewportIndex</code>, the fragment stage will read zero.
            Otherwise, the fragment stage will read the same value written by the geometry stage, even if that value is
            out of range. If a fragment shader contains a static access to <code class="function">gl_ViewportIndex</code>, it will count against the
            implementation defined limit for the maximum number of inputs to the fragment stage.
        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="versions"></a><h2>Version Support</h2><div class="informaltable"><table border="1"><colgroup><col align="left" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /><col align="center" /></colgroup><thead><tr><th align="left"><span class="bold"><strong>Function</strong></span></th><th align="left"><span class="bold"><strong>Version 1.10</strong></span></th><th align="left"><span class="bold"><strong>Version 1.20</strong></span></th><th align="left"><span class="bold"><strong>Version 1.30</strong></span></th><th align="left"><span class="bold"><strong>Version 1.40</strong></span></th><th align="left"><span class="bold"><strong>Version 1.50</strong></span></th><th align="left"><span class="bold"><strong>Version 3.30</strong></span></th><th align="left"><span class="bold"><strong>Version 4.00</strong></span></th><th align="left"><span class="bold"><strong>Version 4.10</strong></span></th><th align="left"><span class="bold"><strong>Version 4.20</strong></span></th><th align="center"><span class="bold"><strong>Version 4.30</strong></span></th></tr><tr><th align="left">gl_ViewportIndex (geometry stage)</th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>Y</em></span></th><th align="center"><span class="emphasis"><em>Y</em></span></th><th align="center"><span class="emphasis"><em>Y</em></span></th><th align="center"><span class="emphasis"><em>Y</em></span></th><th align="center"><span class="emphasis"><em>Y</em></span></th><th align="center"><span class="emphasis"><em>Y</em></span></th></tr><tr><th align="left">gl_ViewportIndex (fragment stage)</th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>-</em></span></th><th align="center"><span class="emphasis"><em>Y</em></span></th></tr></thead></table></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="seealso"></a><h2>See Also</h2><p>
            <a href="gl_Layer.xml"><span class="citerefentry"><span class="refentrytitle">gl_Layer</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>© 2011 Khronos Group. 
            This material may be distributed subject to the terms and conditions set forth in 
            the Open Publication License, v 1.0, 8 June 1999.
            <a href="http://opencontent.org/openpub/" target="_top">http://opencontent.org/openpub/</a>.
        </p></div></div></body></html>
