1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
2 <!-- saved from url=(0013)about:internet -->
3 <?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" /><title>glDrawBuffers
</title><meta name=
"generator" content=
"DocBook XSL Stylesheets V1.73.2" /></head><body><div class=
"refentry" lang=
"en" xml:
lang=
"en"><a id=
"glDrawBuffers"></a><div class=
"titlepage"></div><div class=
"refnamediv"><h2>Name
</h2><p>glDrawBuffers — Specifies a list of color buffers to be drawn into
</p></div><div class=
"refsynopsisdiv"><h2>C Specification
</h2><div class=
"funcsynopsis"><table border=
"0" summary=
"Function synopsis" cellspacing=
"0" cellpadding=
"0"><tr><td><code class=
"funcdef">void
<b class=
"fsfunc">glDrawBuffers
</b>(
</code></td><td>GLsizei
</td><td><var class=
"pdparam">n
</var>,
</td></tr><tr><td> </td><td>const GLenum *
</td><td><var class=
"pdparam">bufs
</var><code>)
</code>;
</td></tr></table></div></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"parameters"></a><h2>Parameters
</h2><div class=
"variablelist"><dl><dt><span class=
"term"><em class=
"parameter"><code>n
</code></em></span></dt><dd><p>Specifies the number of buffers in
4 <em class=
"parameter"><code>bufs
</code></em>.
</p></dd><dt><span class=
"term"><em class=
"parameter"><code>bufs
</code></em></span></dt><dd><p>Points to an array of symbolic constants
5 specifying the buffers into which fragment colors or
6 data values will be written.
</p></dd></dl></div></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"description"></a><h2>Description
</h2><p><code class=
"function">glDrawBuffers
</code> defines an array of
7 buffers into which fragment color values or fragment data will
8 be written. If no fragment shader is active, rendering
9 operations will generate only one fragment color per fragment
10 and it will be written into each of the buffers specified by
11 <em class=
"parameter"><code>bufs
</code></em>. If a fragment shader is active and
12 it writes a value to the output variable
13 <code class=
"code">gl_FragColor
</code>, then that value will be
14 written into each of the buffers specified by
15 <em class=
"parameter"><code>bufs
</code></em>. If a fragment shader is active and
16 it writes a value to one or more elements of the output array
17 variable
<code class=
"code">gl_FragData[]
</code>, then the value of
18 <code class=
"code">gl_FragData[
0]
</code> will be written into the
19 first buffer specified by
<em class=
"parameter"><code>bufs
</code></em>, the value
20 of
<code class=
"code">gl_FragData[
1]
</code> will be written into the
21 second buffer specified by
<em class=
"parameter"><code>bufs
</code></em>, and so
22 on up to
<code class=
"code">gl_FragData[n-
1]
</code>. The draw buffer
23 used for
<code class=
"code">gl_FragData[n]
</code> and beyond is
24 implicitly set to be
<code class=
"constant">GL_NONE
</code>.
</p><p>The symbolic constants contained in
25 <em class=
"parameter"><code>bufs
</code></em> may be any of the following:
</p><div class=
"variablelist"><dl><dt><span class=
"term"><code class=
"constant">GL_NONE
</code></span></dt><dd><p>The fragment color/data value is not written into
26 any color buffer.
</p></dd><dt><span class=
"term"><code class=
"constant">GL_FRONT_LEFT
</code></span></dt><dd><p>The fragment color/data value is written into the
27 front left color buffer.
</p></dd><dt><span class=
"term"><code class=
"constant">GL_FRONT_RIGHT
</code></span></dt><dd><p>The fragment color/data value is written into the
28 front right color buffer.
</p></dd><dt><span class=
"term"><code class=
"constant">GL_BACK_LEFT
</code></span></dt><dd><p>The fragment color/data value is written into the
29 back left color buffer.
</p></dd><dt><span class=
"term"><code class=
"constant">GL_BACK_RIGHT
</code></span></dt><dd><p>The fragment color/data value is written into the
30 back right color buffer.
</p></dd><dt><span class=
"term"><code class=
"constant">GL_AUXi
</code></span></dt><dd><p>The fragment color/data value is written into
31 auxiliary buffer
<code class=
"code">i
</code>.
</p></dd></dl></div><p>Except for
<code class=
"constant">GL_NONE
</code>, the preceding
32 symbolic constants may not appear more than once in
33 <em class=
"parameter"><code>bufs
</code></em>. The maximum number of draw buffers
34 supported is implementation dependent and can be queried by
36 <a class=
"citerefentry" href=
"glGet.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glGet
</span></span></a>
37 with the argument
<code class=
"constant">GL_MAX_DRAW_BUFFERS
</code>. The
38 number of auxiliary buffers can be queried by calling
39 <a class=
"citerefentry" href=
"glGet.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glGet
</span></span></a>
40 with the argument
<code class=
"constant">GL_AUX_BUFFERS
</code>.
</p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"notes"></a><h2>Notes
</h2><p><code class=
"function">glDrawBuffers
</code> is available only if
41 the GL version is
2.0 or greater.
</p><p>It is always the case that
<code class=
"constant">GL_AUXi
</code> =
42 <code class=
"constant">GL_AUX0
</code> +
<code class=
"code">i
</code>.
</p><p>The symbolic constants
<code class=
"constant">GL_FRONT
</code>,
43 <code class=
"constant">GL_BACK
</code>,
<code class=
"constant">GL_LEFT
</code>,
44 <code class=
"constant">GL_RIGHT
</code>, and
45 <code class=
"constant">GL_FRONT_AND_BACK
</code> are not allowed in the
46 <em class=
"parameter"><code>bufs
</code></em> array since they may refer to
47 multiple buffers.
</p><p>If a fragment shader writes to neither
48 <code class=
"code">gl_FragColor
</code> nor
49 <code class=
"code">gl_FragData
</code>, the values of the fragment
50 colors following shader execution are undefined. For each
51 fragment generated in this situation, a different value may be
52 written into each of the buffers specified by
53 <em class=
"parameter"><code>bufs
</code></em>.
</p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"errors"></a><h2>Errors
</h2><p><code class=
"constant">GL_INVALID_ENUM
</code> is generated if one of the
54 values in
<em class=
"parameter"><code>bufs
</code></em> is not an accepted
55 value.
</p><p><code class=
"constant">GL_INVALID_ENUM
</code> is generated if
56 <em class=
"parameter"><code>n
</code></em> is less than
0.
</p><p><code class=
"constant">GL_INVALID_OPERATION
</code> is generated if a
57 symbolic constant other than
<code class=
"constant">GL_NONE
</code>
58 appears more than once in
<em class=
"parameter"><code>bufs
</code></em>.
</p><p><code class=
"constant">GL_INVALID_OPERATION
</code> is generated if any of
59 the entries in
<em class=
"parameter"><code>bufs
</code></em> (other than
60 <code class=
"constant">GL_NONE
</code> ) indicates a color buffer that
61 does not exist in the current GL context.
</p><p><code class=
"constant">GL_INVALID_VALUE
</code> is generated if
62 <em class=
"parameter"><code>n
</code></em> is greater than
63 <code class=
"constant">GL_MAX_DRAW_BUFFERS
</code>.
</p><p><code class=
"constant">GL_INVALID_OPERATION
</code> is generated if
64 <code class=
"function">glDrawBuffers
</code> is executed between the
66 <a class=
"citerefentry" href=
"glBegin.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glBegin
</span></span></a>
67 and the corresponding execution of
68 <a class=
"citerefentry" href=
"glEnd.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glEnd
</span></span></a>.
</p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"associatedgets"></a><h2>Associated Gets
</h2><p><a class=
"citerefentry" href=
"glGet.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glGet
</span></span></a>
69 with argument
<code class=
"constant">GL_MAX_DRAW_BUFFERS
</code></p><p><a class=
"citerefentry" href=
"glGet.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glGet
</span></span></a>
70 with argument
<code class=
"constant">GL_DRAW_BUFFERSi
</code> where
71 <code class=
"code">i
</code> indicates the number of the draw buffer
72 whose value is to be queried
</p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"seealso"></a><h2>See Also
</h2><p> <a class=
"citerefentry" href=
"glBlendFunc.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glBlendFunc
</span></span></a>,
73 <a class=
"citerefentry" href=
"glColorMask.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glColorMask
</span></span></a>,
74 <a class=
"citerefentry" href=
"glDrawBuffers.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glDrawBuffers
</span></span></a>,
75 <a class=
"citerefentry" href=
"glIndexMask.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glIndexMask
</span></span></a>,
76 <a class=
"citerefentry" href=
"glLogicOp.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glLogicOp
</span></span></a>,
77 <a class=
"citerefentry" href=
"glReadBuffer.xml"><span class=
"citerefentry"><span class=
"refentrytitle">glReadBuffer
</span></span></a></p></div><div class=
"refsect1" lang=
"en" xml:
lang=
"en"><a id=
"Copyright"></a><h2>Copyright
</h2><p>
78 Copyright
<span class=
"trademark"></span>©
2003-
2005 3Dlabs Inc. Ltd.
79 This material may be distributed subject to the terms and conditions set forth in
80 the Open Publication License, v
1.0,
8 June
1999.
81 <a class=
"ulink" href=
"http://opencontent.org/openpub/" target=
"_top">http://opencontent.org/openpub/
</a>.
82 </p></div></div></body></html>