glDrawBuffers
3G
glDrawBuffers
Specifies a list of color buffers to be drawn into
C Specification
void glDrawBuffers
GLsizei n
const GLenum *bufs
Parameters
n
Specifies the number of buffers in
bufs.
bufs
Points to an array of symbolic constants
specifying the buffers into which fragment colors or
data values will be written.
Description
glDrawBuffers defines an array of
buffers into which fragment color values or fragment data will
be written. If no fragment shader is active, rendering
operations will generate only one fragment color per fragment
and it will be written into each of the buffers specified by
bufs. If a fragment shader is active and
it writes a value to the output variable
gl_FragColor
, then that value will be
written into each of the buffers specified by
bufs. If a fragment shader is active and
it writes a value to one or more elements of the output array
variable gl_FragData[]
, then the value of
gl_FragData[0]
will be written into the
first buffer specified by bufs, the value
of gl_FragData[1]
will be written into the
second buffer specified by bufs, and so
on up to gl_FragData[n-1]
. The draw buffer
used for gl_FragData[n]
and beyond is
implicitly set to be GL_NONE.
The symbolic constants contained in
bufs may be any of the following:
GL_NONE
The fragment color/data value is not written into
any color buffer.
GL_FRONT_LEFT
The fragment color/data value is written into the
front left color buffer.
GL_FRONT_RIGHT
The fragment color/data value is written into the
front right color buffer.
GL_BACK_LEFT
The fragment color/data value is written into the
back left color buffer.
GL_BACK_RIGHT
The fragment color/data value is written into the
back right color buffer.
GL_AUXi
The fragment color/data value is written into
auxiliary buffer i
.
Except for GL_NONE, the preceding
symbolic constants may not appear more than once in
bufs. The maximum number of draw buffers
supported is implementation dependent and can be queried by
calling
glGet
with the argument GL_MAX_DRAW_BUFFERS. The
number of auxiliary buffers can be queried by calling
glGet
with the argument GL_AUX_BUFFERS.
Notes
glDrawBuffers is available only if
the GL version is 2.0 or greater.
It is always the case that GL_AUXi =
GL_AUX0 + i
.
The symbolic constants GL_FRONT,
GL_BACK, GL_LEFT,
GL_RIGHT, and
GL_FRONT_AND_BACK are not allowed in the
bufs array since they may refer to
multiple buffers.
If a fragment shader writes to neither
gl_FragColor
nor
gl_FragData
, 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
bufs.
Errors
GL_INVALID_ENUM is generated if one of the
values in bufs is not an accepted
value.
GL_INVALID_ENUM is generated if
n is less than 0.
GL_INVALID_OPERATION is generated if a
symbolic constant other than GL_NONE
appears more than once in bufs.
GL_INVALID_OPERATION is generated if any of
the entries in bufs (other than
GL_NONE ) indicates a color buffer that
does not exist in the current GL context.
GL_INVALID_VALUE is generated if
n is greater than
GL_MAX_DRAW_BUFFERS.
GL_INVALID_OPERATION is generated if
glDrawBuffers is executed between the
execution of
glBegin
and the corresponding execution of
glEnd.
Associated Gets
glGet
with argument GL_MAX_DRAW_BUFFERS
glGet
with argument GL_DRAW_BUFFERSi where
i
indicates the number of the draw buffer
whose value is to be queried
See Also
glBlendFunc,
glColorMask,
glDrawBuffers,
glIndexMask,
glLogicOp,
glReadBuffer
Copyright
Copyright 2003-2005 3Dlabs Inc. Ltd.
This material may be distributed subject to the terms and conditions set forth in
the Open Publication License, v 1.0, 8 June 1999.
http://opencontent.org/openpub/.