Name WGL_ARB_pixel_format Name Strings WGL_ARB_pixel_format Contact Pat Brown, NVIDIA (pbrown 'at' nvidia.com) Paula Womack Notice Copyright (c) 2000-2013 The Khronos Group Inc. Copyright terms at http://www.khronos.org/registry/speccopyright.html Specification Update Policy Khronos-approved extension specifications are updated in response to issues and bugs prioritized by the Khronos OpenGL Working Group. For extensions which have been promoted to a core Specification, fixes will first appear in the latest version of that core Specification, and will eventually be backported to the extension document. This policy is described in more detail at https://www.khronos.org/registry/OpenGL/docs/update_policy.php Status Complete. Approved by ARB on 3/15/2000. Version Last Modified Date: March 25, 2009 Author Revision: 1.3 Number ARB Extension #9 Dependencies WGL_ARB_extensions_string is required. Overview This extension adds functions to query pixel format attributes and to choose from the list of supported pixel formats. These functions treat pixel formats as opaque types: attributes are specified by name rather than by accessing them directly as fields in a structure. Thus the list of attributes can be easily extended. Attribute names are defined which correspond to all of the values in the PIXELFORMATDESCRIPTOR and LAYERPLANEDESCRIPTOR data structures. Additionally this interface allows pixel formats to be supported which have attributes that cannot be represented using the standard pixel format functions, i.e. DescribePixelFormat, DescribeLayerPlane, ChoosePixelFormat, SetPixelFormat, and GetPixelFormat. IP Status No issues. Issues and Notes 1. No provision is made to support extended pixel format attributes in metafiles. 2. Should the transparent value pixel format attribute have separate red, green and blue values? Yes. 3. What data type should the transparent value be? This is no longer an issue since the transparent value is no longer a packed pixel value (it has separate r,g,b,a and index values). 4. Should we add DONT_CARE values for some of the pixel format attributes? No we should just ignore attributes that aren't specified in the list passed to wglChoosePixelFormatARB. 5. Should wglGetPixelFormatAttrib*vARB ignore the parameter when the attribute specified only applies to the main planes (e.g., when the attribute is set to WGL_NUMBER_OVERLAYS) or should it require to be set to zero? It will just ignore the parameter. This allows these attributes to be queried at the same time as attributes of the overlay planes. 6. Should wglGetPixelFormatAttribivARB convert floating point values to fixed point? No, wglChoosePixelFormatARB needs a way to accept floating point values. pfAttribFList accomplishes this. 7. Should wglChoosePixelFormatARB take an parameter? Typically would be set to zero and a pixel format would be selected based on the attributes of the main plane, so there is no parameter. This should be OK; applications won't typically select a pixel format on the basis of overlay attributes. They can always call wglGetPixelFormatAttrib*vARB to get a pixel format that has the desired overlay values. 8. Application programmers must check to see if a particular extension is supported before using any pixel format attributes associated with the extension. For example, if WGL_ARB_pbuffer is not supported then it is an error to specify WGL_DRAW_TO_PBUFFER_ARB in the attribute list to wglGetPixelFormatAttrib*vARB or wglChoosePixelFormatARB. 9. Should WGLChoosePixelFormatARB consider pixel formats at other display depths? It would be useful to have an argument to WGLChoosePixelFormatARB indicating what display depth should be used. However, there is no good way to implement this in the ICD since pixel format handles are sequential indices and the pixel format for index n differs depending on the display mode. 10. Should we allow non-displayable pixel formats for pbuffers? Yes, although many (most?) implementations will use displayable pixel formats for pbuffers, this is a useful feature and the spec should allow for it. 11. Should we create all new calls for pixel formats, specifically should we introduce SetPixelFormatARB? No, this doesn't offer any value over the existing SetPixelFormat call. 12. Should we add support for triple buffering? No, triple buffering needs to be covered by a separate extension. New Procedures and Functions BOOL wglGetPixelFormatAttribivARB(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues); BOOL wglGetPixelFormatAttribfvARB(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues); BOOL wglChoosePixelFormatARB(HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); New Tokens Accepted in the parameter array of wglGetPixelFormatAttribivARB, and wglGetPixelFormatAttribfvARB, and as a type in the and parameter arrays of wglChoosePixelFormatARB: WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 WGL_DRAW_TO_WINDOW_ARB 0x2001 WGL_DRAW_TO_BITMAP_ARB 0x2002 WGL_ACCELERATION_ARB 0x2003 WGL_NEED_PALETTE_ARB 0x2004 WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 WGL_SWAP_METHOD_ARB 0x2007 WGL_NUMBER_OVERLAYS_ARB 0x2008 WGL_NUMBER_UNDERLAYS_ARB 0x2009 WGL_TRANSPARENT_ARB 0x200A WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B WGL_SHARE_DEPTH_ARB 0x200C WGL_SHARE_STENCIL_ARB 0x200D WGL_SHARE_ACCUM_ARB 0x200E WGL_SUPPORT_GDI_ARB 0x200F WGL_SUPPORT_OPENGL_ARB 0x2010 WGL_DOUBLE_BUFFER_ARB 0x2011 WGL_STEREO_ARB 0x2012 WGL_PIXEL_TYPE_ARB 0x2013 WGL_COLOR_BITS_ARB 0x2014 WGL_RED_BITS_ARB 0x2015 WGL_RED_SHIFT_ARB 0x2016 WGL_GREEN_BITS_ARB 0x2017 WGL_GREEN_SHIFT_ARB 0x2018 WGL_BLUE_BITS_ARB 0x2019 WGL_BLUE_SHIFT_ARB 0x201A WGL_ALPHA_BITS_ARB 0x201B WGL_ALPHA_SHIFT_ARB 0x201C WGL_ACCUM_BITS_ARB 0x201D WGL_ACCUM_RED_BITS_ARB 0x201E WGL_ACCUM_GREEN_BITS_ARB 0x201F WGL_ACCUM_BLUE_BITS_ARB 0x2020 WGL_ACCUM_ALPHA_BITS_ARB 0x2021 WGL_DEPTH_BITS_ARB 0x2022 WGL_STENCIL_BITS_ARB 0x2023 WGL_AUX_BUFFERS_ARB 0x2024 Accepted as a value in the and parameter arrays of wglChoosePixelFormatARB, and returned in the parameter array of wglGetPixelFormatAttribivARB, and the parameter array of wglGetPixelFormatAttribfvARB: WGL_NO_ACCELERATION_ARB 0x2025 WGL_GENERIC_ACCELERATION_ARB 0x2026 WGL_FULL_ACCELERATION_ARB 0x2027 WGL_SWAP_EXCHANGE_ARB 0x2028 WGL_SWAP_COPY_ARB 0x2029 WGL_SWAP_UNDEFINED_ARB 0x202A WGL_TYPE_RGBA_ARB 0x202B WGL_TYPE_COLORINDEX_ARB 0x202C Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation) None Additions to Chapter 3 of the 1.2 Specification (Rasterization) None Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and the Frame buffer) None Additions to Chapter 5 of the 1.2 Specification (Special Functions) None Additions to Chapter 6 of the 1.2 Specification (State and State Requests) None Additions to the WGL Specification Pixel Formats WGL uses pixel format indices to refer to the pixel formats supported by a device. The standard pixel format functions DescribePixelFormat, DescribeLayerPlane, ChoosePixelFormat, SetPixelFormat, and GetPixelFormat specify pixel format attributes using the PIXELFORMATDESCRIPTOR and LAYERPLANEDESCRIPTOR data structures. An additional set of functions may be used to query and specify pixel format attributes by name. Querying Pixel Format Attributes The following two functions can be used to query pixel format attributes by specifying a list of attributes to be queried and providing a buffer in which to receive the results from the query. These functions can be used to query the attributes of both the main plane and layer planes of a given pixel format. BOOL wglGetPixelFormatAttribivARB(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues); specifies the device context on which the pixel format is supported. is an index that specifies the pixel format. The pixel formats that a device context supports are identified by positive one-based integer indexes. specifies which plane is being queried. Positive values of identify overlay planes, where 1 is the first overlay plane over the main plane, 2 is the second overlay plane over the first overlay plane, and so on. Negative values identify underlay planes, where -1 is the first underlay plane under the main plane, -2 is the second underlay plane under the first underlay plane and so on. Use zero for the main plane. number of attributes being queried. list containing an array of pixel format attribute identifiers which specify the attributes to be queried. The following values are accepted: WGL_NUMBER_PIXEL_FORMATS_ARB The number of pixel formats for the device context. The and parameters are ignored if this attribute is specified. WGL_DRAW_TO_WINDOW_ARB True if the pixel format can be used with a window. The parameter is ignored if this attribute is specified. WGL_DRAW_TO_BITMAP_ARB True if the pixel format can be used with a memory bitmap. The parameter is ignored if this attribute is specified. WGL_ACCELERATION_ARB Indicates whether the pixel format is supported by the driver. If this is set to WGL_NO_ACCELERATION_ARB then only the software renderer supports this pixel format; if this is set to WGL_GENERIC_ACCELERATION_ARB then the pixel format is supported by an MCD driver; if this is set to WGL_FULL_ACCELERATION_ARB then the pixel format is supported by an ICD driver. WGL_NEED_PALETTE_ARB A logical palette is required to achieve the best results for this pixel format. The parameter is ignored if this attribute is specified. WGL_NEED_SYSTEM_PALETTE_ARB The hardware supports one hardware palette in 256-color mode only. The parameter is ignored if this attribute is specified. WGL_SWAP_LAYER_BUFFERS_ARB True if the pixel format supports swapping layer planes independently of the main planes. If the pixel format does not support a back buffer then this is set to FALSE. The parameter is ignored if this attribute is specified. WGL_SWAP_METHOD_ARB If the pixel format supports a back buffer, then this indicates how they are swapped. If this attribute is set to WGL_SWAP_EXCHANGE_ARB then swapping exchanges the front and back buffer contents; if it is set to WGL_SWAP_COPY_ARB then swapping copies the back buffer contents to the front buffer; if it is set to WGL_SWAP_UNDEFINED_ARB then the back buffer contents are copied to the front buffer but the back buffer contents are undefined after the operation. If the pixel format does not support a back buffer then this parameter is set to WGL_SWAP_UNDEFINED_ARB. The parameter is ignored if this attribute is specified. WGL_NUMBER_OVERLAYS_ARB The number of overlay planes. The parameter is ignored if this attribute is specified. WGL_NUMBER_UNDERLAYS_ARB The number of underlay planes. The parameter is ignored if this attribute is specified. WGL_TRANSPARENT_ARB True if transparency is supported. WGL_TRANSPARENT_RED_VALUE_ARB Specifies the transparent red color value. Typically this value is the same for all layer planes. This value is undefined if transparency is not supported. WGL_TRANSPARENT_GREEN_VALUE_ARB Specifies the transparent green value. Typically this value is the same for all layer planes. This value is undefined if transparency is not supported. WGL_TRANSPARENT_BLUE_VALUE_ARB Specifies the transparent blue color value. Typically this value is the same for all layer planes. This value is undefined if transparency is not supported. WGL_TRANSPARENT_ALPHA_VALUE_ARB Specifies the transparent alpha value. This is reserved for future use. WGL_TRANSPARENT_INDEX_VALUE_ARB Specifies the transparent color index value. Typically this value is the same for all layer planes. This value is undefined if transparency is not supported. WGL_SHARE_DEPTH_ARB True if the layer plane shares the depth buffer with the main planes. If is zero, this is always true. WGL_SHARE_STENCIL_ARB True if the layer plane shares the stencil buffer with the main planes. If is zero, this is always true. WGL_SHARE_ACCUM_ARB True if the layer plane shares the accumulation buffer with the main planes. If is zero, this is always true. WGL_SUPPORT_GDI_ARB True if GDI rendering is supported. WGL_SUPPORT_OPENGL_ARB True if OpenGL is supported. WGL_DOUBLE_BUFFER_ARB True if the color buffer has back/front pairs. WGL_STEREO_ARB True if the color buffer has left/right pairs. WGL_PIXEL_TYPE_ARB The type of pixel data. This can be set to WGL_TYPE_RGBA_ARB or WGL_TYPE_COLORINDEX_ARB. WGL_COLOR_BITS_ARB The number of color bitplanes in each color buffer. For RGBA pixel types, it is the size of the color buffer, excluding the alpha bitplanes. For color-index pixels, it is the size of the color index buffer. WGL_RED_BITS_ARB The number of red bitplanes in each RGBA color buffer. WGL_RED_SHIFT_ARB The shift count for red bitplanes in each RGBA color buffer. WGL_GREEN_BITS_ARB The number of green bitplanes in each RGBA color buffer. WGL_GREEN_SHIFT_ARB The shift count for green bitplanes in each RGBA color buffer. WGL_BLUE_BITS_ARB The number of blue bitplanes in each RGBA color buffer. WGL_BLUE_SHIFT_ARB The shift count for blue bitplanes in each RGBA color buffer. WGL_ALPHA_BITS_ARB The number of alpha bitplanes in each RGBA color buffer. WGL_ALPHA_SHIFT_ARB The shift count for alpha bitplanes in each RGBA color buffer. WGL_ACCUM_BITS_ARB The total number of bitplanes in the accumulation buffer. WGL_ACCUM_RED_BITS_ARB The number of red bitplanes in the accumulation buffer. WGL_ACCUM_GREEN_BITS_ARB The number of green bitplanes in the accumulation buffer. WGL_ACCUM_BLUE_BITS_ARB The number of blue bitplanes in the accumulation buffer. WGL_ACCUM_ALPHA_BITS_ARB The number of alpha bitplanes in the accumulation buffer. WGL_DEPTH_BITS_ARB The depth of the depth (z-axis) buffer. WGL_STENCIL_BITS_ARB The depth of the stencil buffer. WGL_AUX_BUFFERS_ARB The number of auxiliary buffers. points to a buffer into which the results of the query will be placed. Floating point attribute values are rounded to the nearest integer value. The caller must allocate this array and it must have at least entries. If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. An error is generated if contains an invalid attribute, if is not a positive integer or is larger than the number of pixel formats, if doesn't refer to an existing layer plane, or if is invalid. If FALSE is returned, the contents of are undefined. BOOL wglGetPixelFormatAttribfvARB(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues); specifies the device context on which the pixel format is supported. is an index that specifies the pixel format. The pixel formats that a device context supports are identified by positive one-based integer indexes. specifies which plane is being queried. Positive values of identify overlay planes, where 1 is the first overlay plane over the main plane, 2 is the second overlay plane over the first overlay plane, and so on. Negative values identify underlay planes, where -1 is the first underlay plane under the main plane, -2 is the second underlay plane under the first underlay plane and so on. Use zero for the main plane. number of attributes being queried. list containing an array of pixel format attribute identifiers which specify the attributes to be queried. The values accepted are the same as for wglGetPixelFormatAttribivARB. is a pointer to a buffer into which the results of the query will be placed. Integer attribute values are converted floating point The caller must allocate this array and it must have at least at least entries. If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. An error is generated if contains an invalid attribute, if is not a positive integer or is larger than the number of pixel formats, if doesn't refer to an existing layer plane, or if is invalid. If FALSE is returned, the contents of are undefined. Supported Pixel Formats The maximum index of the pixel formats which can be referenced by the standard pixel format functions is returned by a successful call to DescribePixelFormat. This may be less than the maximum index of the pixel formats which can be referenced by wglGetPixelFormatAttribivARB and wglGetPixelFormatAttribfvARB. (determined by querying WGL_NUMBER_PIXEL_FORMATS_ARB). The pixel format of a "displayable" object (e.g. window, bitmap) is specified by passing its index to SetPixelFormat. Therefore, pixel formats which cannot be referenced by the standard pixel format functions are "non displayable". Indices are assigned to pixel formats in the following order: 1. Accelerated pixel formats that are displayable 2. Accelerated pixel formats that are displayable and which have extended attributes 3. Generic pixel formats 4. Accelerated pixel formats that are non displayable ChoosePixelFormat will never select pixel formats from either group 2 or group 4. Each pixel format in group 2 is required to appear identical to some pixel format in group 1 when queried by DescribePixelFormat. Consequently, ChoosePixelFormat will always select a format from group 1 when it might otherwise have selected a format from group 2. Pixel formats in group 4 cannot be accessed by ChoosePixelFormat at all. SetPixelFormat and DescribePixelFormat will only accept pixel formats from groups 1-3. If a non-displayable pixel format is specified to SetPixelFormat or DescribePixelFormat an error will result. These pixel formats are only for use with WGL extensions, such as WGLCreatePbufferARB. The following function may be used to select from among all of the available pixel formats (including both accelerated and generic formats and non-displayable formats). This function accepts attributes for the main planes. A list of pixel formats that match the specified attributes is returned with the "best" pixel formats at the start of the list (order is device dependent). BOOL wglChoosePixelFormatARB(HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats); specifies the device context. specifies a list of attribute {type, value} pairs containing integer attribute values. All the attributes in are followed by the corresponding desired value. The list is terminated with 0. If is NULL then the result is the same as if was empty. specifies a list of attribute {type, value} pairs containing floating point attribute values. All the attributes in are followed by the corresponding desired value. The list is terminated with 0. If is NULL then the result is the same as if was empty. specifies the maximum number of pixel formats to be returned. points to an array of returned indices of the matching pixel formats. The best pixel formats (i.e., closest match and best format for the hardware) are at the head of the list. The caller must allocate this array and it must have at least entries. returns the number of matching formats. The returned value is guaranteed to be no larger than . If the function succeeds, the return value is TRUE. If the function fails the return value is FALSE. To get extended error information, call GetLastError. If no matching formats are found then nNumFormats is set to zero and the function returns TRUE. If FALSE is returned, the contents of are undefined. wglChoosePixelFormatARB selects pixel formats to return based on the attribute values specified in and . Some attribute values must match the pixel format value exactly when the attribute is specified while others specify a minimum criteria, meaning that the pixel format value must meet or exceed the specified value. See the table below for details. Attribute Type Match Criteria WGL_DRAW_TO_WINDOW_ARB boolean exact WGL_DRAW_TO_BITMAP_ARB boolean exact WGL_ACCELERATION_ARB enum exact WGL_NEED_PALETTE_ARB boolean exact WGL_NEED_SYSTEM_PALETTE_ARB boolean exact WGL_SWAP_LAYER_BUFFERS_ARB boolean exact WGL_SWAP_METHOD_ARB enum exact WGL_NUMBER_OVERLAYS_ARB integer minimum WGL_NUMBER_UNDERLAYS_ARB integer minimum WGL_SHARE_DEPTH_ARB boolean exact WGL_SHARE_STENCIL_ARB boolean exact WGL_SHARE_ACCUM_ARB boolean exact WGL_SUPPORT_GDI_ARB boolean exact WGL_SUPPORT_OPENGL_ARB boolean exact WGL_DOUBLE_BUFFER_ARB boolean exact WGL_STEREO_ARB boolean exact WGL_PIXEL_TYPE_ARB enum exact WGL_COLOR_BITS_ARB integer minimum WGL_RED_BITS_ARB integer minimum WGL_GREEN_BITS_ARB integer minimum WGL_BLUE_BITS_ARB integer minimum WGL_ALPHA_BITS_ARB integer minimum WGL_ACCUM_BITS_ARB integer minimum WGL_ACCUM_RED_BITS_ARB integer minimum WGL_ACCUM_GREEN_BITS_ARB integer minimum WGL_ACCUM_BLUE_BITS_ARB integer minimum WGL_ACCUM_ALPHA_BITS_ARB integer minimum WGL_DEPTH_BITS_ARB integer minimum WGL_STENCIL_BITS_ARB integer minimum WGL_AUX_BUFFERS_ARB integer minimum All attributes except WGL_NUMBER_OVERLAYS_ARB, WGL_NUMBER_UNDERLAYS_ARB, WGL_SHARE_DEPTH_ARB, WGL_SHARE_STENCIL_ARB, and WGL_SHARE_ACCUM_ARB apply to the main planes and not to any layer planes. If WGL_SHARE_DEPTH_ARB, WGL_SHARE_STENCIL_ARB, and WGL_SHARE_ACCUM_ARB are specified in either or , then a pixel format will only be selected if it has no overlays or underlays or if all of its overlays and underlays match the specified value. Applications that need to find a pixel format that supports a layer plane with other buffer attributes (such as WGL_SUPPORT_OPENGL_ARB set to TRUE), must go through the list that is returned and call wglGetPixelFormatAttrib*vARB to find one with the appropriate attributes. Attributes that are specified in neither nor are ignored (i.e., they are not looked at during the selection process). In addition the following attributes are always ignored, even if specified: WGL_NUMBER_PIXEL_FORMATS_ARB, WGL_RED_SHIFT_ARB, WGL_GREEN_SHIFT_ARB, WGL_BLUE_SHIFT_ARB, WGL_ALPHA_SHIFT_ARB, WGL_TRANSPARENT_ARB, WGL_TRANSPARENT_RED_VALUE_ARB,WGL_TRANSPARENT_GREEN_VALUE_ARB, WGL_TRANSPARENT_BLUE_VALUE_ARB, WGL_TRANSPARENT_ALPHA_VALUE_ARB, and WGL_TRANSPARENT_INDEX_ARB. If both and are NULL or empty then all pixel formats for this device are returned. An error is generated if or contain an invalid attribute or if is invalid. Although it is not an error, wglChoosePixelFormat and wglChoosePixelFormatARB should not be used together. It is not necessary to change existing OpenGL programs but application writers should use wglChoosePixelFormatARB whenever possible. New pixel format attributes introduced by extensions (such as the number of multisample buffers) will only be known to the new calls, wglChoosePixelFormatARB and wglGetPixelFormatAttrib*vARB.. New State None New Implementation Dependent State None Dependencies on WGL_ARB_extensions_string Because there is no way to extend WGL, these calls are defined in the ICD and can be called by obtaining the address with wglGetProcAddress. Because this extension is a WGL extension, it is not included in the extension string returned by glGetString. Its existence can be determined with the WGL_ARB_extensions_string extension. Revision History Changes from EXT_pixel_format: * Added WGL prefix to name to avoid possible name collisions * EXT suffix changed to ARB * Updated to new template, adding contact, status and revision sections * Version is no longer an RCS version * Attribute list passed to wglGetPixelFormatAttrib*v is type const * Separate red,green,blue,alpha and index transparent values * WGL_SWAP_LAYER_BUFFERS and WGL_SWAP_METHOD values defined for single buffered pixel formats * Array of return values for wglGetPixelFormatAttrib*v and wglChoosePixelFormatARB is undefined if function fails * Error returned if iPixelFormat is zero or negative in wglGetPixelFormat*v * Under "Supported Pixel Formats", indicate that SetPixelFormat and DescribePixelFormat do not accept non displayable pixel formats. Passing one in results in an error * If either piAttribIList of pfAttribFList are NULL when wglChoosePixelFormatARB is called then it is as if they were empty * Clarify that wglChoosePixelFormatARB returns TRUE even if no matching formats found * wglChoosePixelFormatARB will only match an overlay attribute (eg, WGL_SHARE_DEPTH_ARB) if there are no overlay planes or if all overlay/underlay plane attributes match the specified criteria * Be careful about using term hardware (change to pixel format where appropriate) * wglChoosePixelFormatARB now ignores the following attributes (in addition to WGL_NUMBER_PIXEL_FORMATS_ARB): WGL_*_SHIFT_ARB, WGL_TRANSPARENT_ARB, WGL_TRANSPARENT_*_VALUE_ARB. * Clarify that new pixel format attributes (eg, attributes introduced by extensions such as multisampling) are only known to the new pixel format calls, wglChoosePixelFormatARB and wglGetPixelFormat*vARB. * Add dependency on WGL_ARB_extensions_string 03/12/2002 1.1 - Updated contact information. 07/29/2008 1.2 - Updated contact information. 03/25/2009 1.3 - mjk: Fixed description