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 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