blob: 762082b15ec21d7427538d710577322a913cc7cc [file] [log] [blame]
Name
APPLE_aux_depth_stencil
Name Strings
GL_APPLE_aux_depth_stencil
Contact
Bob Beretta, Apple Inc. (beretta 'at' apple.com)
Version
1.0
Number
370
Dependencies
None
Overview
Normally, each OpenGL drawable allocates at most one depth buffer and one
stencil buffer, regardless of how many aux buffers there are.
When the APPLE_aux_depth_stencil extension is used, and the depth buffer
size is non-zero, the GL silently allocates a separate depth buffer for the
color buffer and for each aux buffer. Similarly, if the stencil buffer size
is non-zero, a separate stencil buffer is allocated for the color buffer and
each aux buffer. This extension does not cause separate depth or stencil
buffers to be allocated for the left and right buffers of a stereo drawable.
A context with no aux buffers will be unaffected by this extension.
Switching the draw or read buffer from the color buffer to an aux buffer, or
switching between two aux buffers, simultaneously switches the associated
depth and stencil buffers, for drawing or reading.
For example, if an OpenGL context has two aux buffers and non-zero depth
buffer size, it will have a total of three depth buffers - one associated
with the color buffer and one associated with each aux buffer. If that
context is used to render to AUX0, then to render to AUX1, the changes to
the depth buffer made by the rendering to AUX1 will not affect the depth
buffer associated with AUX0, and vice versa.
Issues
(1) Because the additional depth and stencil buffers must be present when
the OpenGL context is created, the extension cannot be enabled or disabled
after context creation. How is it enabled?
RESOLVED: The extension is enabled by creating the context with a pixel
format, or visual, specification that includes the aux_depth_stencil
attribure. On MacOSX, this is done by passing the CGLPFAAuxDepthStencil
boolean attribute to CGLChoosePixelFormat. If you create a context with an
aux_depth_stencil pixel format or visual, the context is permanently in
aux_depth_stencil mode.
(2) Because the extension must be enabled before a context is created, there
is no extension string to query. Is there still an extension string?
RESOLVED: The normal semantic of querying the OpenGL extension string does
not apply. If the extension is not supported, the attempt to create a pixel
format or visual with the aux_depth_stencil attribute will fail. However,
the GL_APPLE_aux_depth_stencil extension string is still exported for
consistency.
(3) Once a context has been created, is it possible to whether or not
aux_depth_stencil is active?
RESOLVED: Yes. GetIntegerv can be used to query AUX_DEPTH_STENCIL_APPLE to
see if the current context is an aux_depth_stencil context. The return
value is guaranteed to be TRUE if the context was created with an
aux_depth_stencil pixel format, and FALSE otherwise.
(4) How does this extension interact with ARB_draw_buffers?
RESOLVED: When a fragment program renders to multiple output color buffers,
only the depth and stencil buffers associated with draw buffer 0 are used.
The additional depth and stencil buffers created by aux_depth_stencil are
accessible to the fragment program only when their associated color buffer
is the current draw buffer 0.
New Procedures and Functions
None
New Tokens
Accepted by the <pname> parameter of GetIntegerv.
AUX_DEPTH_STENCIL_APPLE 0x8A14
Errors
None
New State
None
New Implementation Dependent State
Get Value Type Get Command Values Description Section
------------------------------- ------ ------------- ------------- ------------------ ------------
AUX_DEPTH_STENCIL_APPLE Z2 GetIntegerv True or False aux depth stencil -
enabled