<!DOCTYPE refentry [ <!ENTITY % mathent SYSTEM "math.ent"> %mathent; ]> <!-- Converted by db4-upgrade version 1.1 --> <refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="glDrawBuffers"> <info> <copyright> <year>2003-2005</year> <holder>3Dlabs Inc. Ltd.</holder> </copyright> <copyright> <year>2010-2014</year> <holder>Khronos Group</holder> </copyright> </info> <refmeta> <refentrytitle>glDrawBuffers</refentrytitle> <manvolnum>3G</manvolnum> </refmeta> <refnamediv> <refname>glDrawBuffers</refname> <refpurpose>Specifies a list of color buffers to be drawn into</refpurpose> </refnamediv> <refsynopsisdiv> <title>C Specification</title> <funcsynopsis> <funcprototype> <funcdef>void <function>glDrawBuffers</function></funcdef> <paramdef>GLsizei <parameter>n</parameter></paramdef> <paramdef>const GLenum *<parameter>bufs</parameter></paramdef> </funcprototype> </funcsynopsis> </refsynopsisdiv> <refsect1 xml:id="parameters"><title>Parameters</title> <variablelist> <varlistentry> <term><parameter>n</parameter></term> <listitem> <para>Specifies the number of buffers in <parameter>bufs</parameter>.</para> </listitem> </varlistentry> <varlistentry> <term><parameter>bufs</parameter></term> <listitem> <para>Points to an array of symbolic constants specifying the buffers into which fragment colors or data values will be written.</para> </listitem> </varlistentry> </variablelist> </refsect1> <refsect1 xml:id="description"><title>Description</title> <para><function>glDrawBuffers</function> defines an array of buffers into which outputs from the fragment shader data will be written. If a fragment shader writes a value to one or more user defined output variables, then the value of each variable will be written into the buffer specified at a location within <parameter>bufs</parameter> corresponding to the location assigned to that user defined output. The draw buffer used for user defined outputs assigned to locations greater than or equal to <parameter>n</parameter> is implicitly set to <constant>GL_NONE</constant> and any data written to such an output is discarded.</para> <para>The symbolic constants contained in <parameter>bufs</parameter> must be one of the following, depending on whether GL is bound to the default framebuffer or not:</para> <variablelist> <varlistentry> <term><constant>GL_NONE</constant></term> <listitem> <para>The fragment shader output value is not written into any color buffer.</para> </listitem> </varlistentry> <varlistentry> <term><constant>GL_BACK</constant></term> <listitem> <para>The fragment shader output value is written into the back color buffer.</para> </listitem> </varlistentry> <varlistentry> <term><constant>GL_COLOR_ATTACHMENT</constant><emphasis>n</emphasis></term> <listitem> <para>The fragment shader output value is written into the <emphasis>n</emphasis>th color attachment of the current framebuffer. <emphasis>n</emphasis> may range from zero to the value of <constant>GL_MAX_COLOR_ATTACHMENTS</constant>.</para> </listitem> </varlistentry> </variablelist> <para>Except for <constant>GL_NONE</constant>, the preceding symbolic constants may not appear more than once in <parameter>bufs</parameter>. The maximum number of draw buffers supported is implementation dependent and can be queried by calling <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with the argument <constant>GL_MAX_DRAW_BUFFERS</constant>.</para> </refsect1> <refsect1 xml:id="notes"><title>Notes</title> <para>If a fragment shader does not write to a user defined output variable, the values of the fragment colors following shader execution are undefined. For each fragment generated in this situation, a different value may be written into each of the buffers specified by <parameter>bufs</parameter>.</para> </refsect1> <refsect1 xml:id="errors"><title>Errors</title> <para><constant>GL_INVALID_ENUM</constant> is generated if one of the values in <parameter>bufs</parameter> is not an accepted value.</para> <para><constant>GL_INVALID_OPERATION</constant> is generated if the GL is bound to the default framebuffer and <parameter>n</parameter> is not 1, or if the value in <parameter>bufs</parameter> is one of the <constant>GL_COLOR_ATTACHMENT</constant><emphasis>n</emphasis> tokens.</para> <para><constant>GL_INVALID_OPERATION</constant> is generated if the GL is bound to a framebuffer object and the ith buffer listed in <parameter>bufs</parameter> is anything other than <constant>GL_NONE</constant> or <constant>GL_COLOR_ATTACHMENTS</constant><emphasis>i</emphasis>.</para> <para><constant>GL_INVALID_VALUE</constant> is generated if <parameter>n</parameter> is less than 0 or greater than <constant>GL_MAX_DRAW_BUFFERS</constant>.</para> </refsect1> <refsect1 xml:id="associatedgets"><title>Associated Gets</title> <para><citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_MAX_DRAW_BUFFERS</constant></para> <para><citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_DRAW_BUFFER</constant><emphasis>i</emphasis> where <emphasis>i</emphasis> indicates the number of the draw buffer whose value is to be queried.</para> </refsect1> <refsect1 xml:id="versions"> <title>API Version Support</title> <informaltable> <tgroup cols="4" align="left"> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="apifunchead.xml" xpointer="xpointer(/*/*)"/> <tbody> <row> <entry>glDrawBuffers</entry> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="apiversion.xml" xpointer="xpointer(/*/*[@role='es30']/*)"/> </row> </tbody> </tgroup> </informaltable> </refsect1> <refsect1 xml:id="seealso"><title>See Also</title> <para> <citerefentry><refentrytitle>glReadBuffer</refentrytitle></citerefentry> </para> </refsect1> <refsect1 xml:id="Copyright"><title>Copyright</title> <para> Copyright <trademark class="copyright"/> 2003-2005 3Dlabs Inc. Ltd. Copyright <trademark class="copyright"/> 2010-2014 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. <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://opencontent.org/openpub/">http://opencontent.org/openpub/</link>. </para> </refsect1> </refentry>