15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    WGL_ARB_pixel_format
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    WGL_ARB_pixel_format
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Pat Brown, NVIDIA (pbrown 'at' nvidia.com)
125bd8deadSopenharmony_ci    Paula Womack
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciNotice
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    Copyright (c) 2000-2013 The Khronos Group Inc. Copyright terms at
175bd8deadSopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciSpecification Update Policy
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    Khronos-approved extension specifications are updated in response to
225bd8deadSopenharmony_ci    issues and bugs prioritized by the Khronos OpenGL Working Group. For
235bd8deadSopenharmony_ci    extensions which have been promoted to a core Specification, fixes will
245bd8deadSopenharmony_ci    first appear in the latest version of that core Specification, and will
255bd8deadSopenharmony_ci    eventually be backported to the extension document. This policy is
265bd8deadSopenharmony_ci    described in more detail at
275bd8deadSopenharmony_ci        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ciStatus
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ci    Complete. Approved by ARB on 3/15/2000.
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ciVersion
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ci    Last Modified Date: March 25, 2009
365bd8deadSopenharmony_ci    Author Revision: 1.3
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ciNumber
395bd8deadSopenharmony_ci
405bd8deadSopenharmony_ci    ARB Extension #9
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ciDependencies
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ci    WGL_ARB_extensions_string is required.
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ciOverview
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ci    This extension adds functions to query pixel format attributes and
495bd8deadSopenharmony_ci    to choose from the list of supported pixel formats.
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ci    These functions treat pixel formats as opaque types: attributes are
525bd8deadSopenharmony_ci    specified by name rather than by accessing them directly as fields
535bd8deadSopenharmony_ci    in a structure. Thus the list of attributes can be easily extended.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    Attribute names are defined which correspond to all of the values in
565bd8deadSopenharmony_ci    the PIXELFORMATDESCRIPTOR and LAYERPLANEDESCRIPTOR data structures.
575bd8deadSopenharmony_ci    Additionally this interface allows pixel formats to be supported
585bd8deadSopenharmony_ci    which have attributes that cannot be represented using the standard
595bd8deadSopenharmony_ci    pixel format functions, i.e. DescribePixelFormat,
605bd8deadSopenharmony_ci    DescribeLayerPlane, ChoosePixelFormat, SetPixelFormat, and
615bd8deadSopenharmony_ci    GetPixelFormat.
625bd8deadSopenharmony_ci
635bd8deadSopenharmony_ciIP Status
645bd8deadSopenharmony_ci
655bd8deadSopenharmony_ci    No issues.
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ciIssues and Notes
685bd8deadSopenharmony_ci
695bd8deadSopenharmony_ci  1. No provision is made to support extended pixel format attributes in
705bd8deadSopenharmony_ci     metafiles.
715bd8deadSopenharmony_ci  2. Should the transparent value pixel format attribute have separate red,
725bd8deadSopenharmony_ci     green and blue values? Yes.
735bd8deadSopenharmony_ci  3. What data type should the transparent value be? This is no longer an
745bd8deadSopenharmony_ci     issue since the transparent value is no longer a packed pixel value (it
755bd8deadSopenharmony_ci     has separate r,g,b,a and index values).
765bd8deadSopenharmony_ci  4. Should we add DONT_CARE values for some of the pixel format attributes?
775bd8deadSopenharmony_ci     No we should just ignore attributes that aren't specified in the list
785bd8deadSopenharmony_ci     passed to wglChoosePixelFormatARB.
795bd8deadSopenharmony_ci  5. Should wglGetPixelFormatAttrib*vARB ignore the <iLayerPlane> parameter
805bd8deadSopenharmony_ci     when the attribute specified only applies to the main planes (e.g.,
815bd8deadSopenharmony_ci     when the attribute is set to WGL_NUMBER_OVERLAYS) or should it require
825bd8deadSopenharmony_ci     <iLayerPlane> to be set to zero? It will just ignore the parameter.
835bd8deadSopenharmony_ci     This allows these attributes to be queried at the same time as
845bd8deadSopenharmony_ci     attributes of the overlay planes.
855bd8deadSopenharmony_ci  6. Should wglGetPixelFormatAttribivARB convert floating point values to
865bd8deadSopenharmony_ci     fixed point? No, wglChoosePixelFormatARB needs a way to accept floating
875bd8deadSopenharmony_ci     point values. pfAttribFList accomplishes this.
885bd8deadSopenharmony_ci  7. Should wglChoosePixelFormatARB take an <iLayerPlane> parameter?
895bd8deadSopenharmony_ci     Typically <iLayerPlane> would be set to zero and a pixel format would
905bd8deadSopenharmony_ci     be selected based on the attributes of the main plane, so there is no
915bd8deadSopenharmony_ci     <iLayerPlane> parameter. This should be OK; applications won't
925bd8deadSopenharmony_ci     typically select a pixel format on the basis of overlay attributes.
935bd8deadSopenharmony_ci     They can always call wglGetPixelFormatAttrib*vARB to get a pixel format
945bd8deadSopenharmony_ci     that has the desired overlay values.
955bd8deadSopenharmony_ci  8. Application programmers must check to see if a particular extension is
965bd8deadSopenharmony_ci     supported before using any pixel format attributes associated with the
975bd8deadSopenharmony_ci     extension. For example, if WGL_ARB_pbuffer is not supported then it is
985bd8deadSopenharmony_ci     an error to specify WGL_DRAW_TO_PBUFFER_ARB in the attribute list to
995bd8deadSopenharmony_ci     wglGetPixelFormatAttrib*vARB or wglChoosePixelFormatARB.
1005bd8deadSopenharmony_ci  9. Should WGLChoosePixelFormatARB consider pixel formats at other display
1015bd8deadSopenharmony_ci     depths? It would be useful to have an argument to
1025bd8deadSopenharmony_ci     WGLChoosePixelFormatARB indicating what display depth should be used.
1035bd8deadSopenharmony_ci     However, there is no good way to implement this in the ICD since pixel
1045bd8deadSopenharmony_ci     format handles are sequential indices and the pixel format for index n
1055bd8deadSopenharmony_ci     differs depending on the display mode.
1065bd8deadSopenharmony_ci 10. Should we allow non-displayable pixel formats for pbuffers? Yes,
1075bd8deadSopenharmony_ci     although many (most?) implementations will use displayable pixel
1085bd8deadSopenharmony_ci     formats for pbuffers, this is a useful feature and the spec should
1095bd8deadSopenharmony_ci     allow for it.
1105bd8deadSopenharmony_ci 11. Should we create all new calls for pixel formats, specifically should
1115bd8deadSopenharmony_ci     we introduce SetPixelFormatARB? No, this doesn't offer any value over
1125bd8deadSopenharmony_ci     the existing SetPixelFormat call.
1135bd8deadSopenharmony_ci 12. Should we add support for triple buffering? No, triple buffering needs
1145bd8deadSopenharmony_ci     to be covered by a separate extension.
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ciNew Procedures and Functions
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci    BOOL wglGetPixelFormatAttribivARB(HDC hdc,
1195bd8deadSopenharmony_ci                                      int iPixelFormat,
1205bd8deadSopenharmony_ci                                      int iLayerPlane,
1215bd8deadSopenharmony_ci                                      UINT nAttributes,
1225bd8deadSopenharmony_ci                                      const int *piAttributes,
1235bd8deadSopenharmony_ci                                      int *piValues);
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ci    BOOL wglGetPixelFormatAttribfvARB(HDC hdc,
1265bd8deadSopenharmony_ci                                      int iPixelFormat,
1275bd8deadSopenharmony_ci                                      int iLayerPlane,
1285bd8deadSopenharmony_ci                                      UINT nAttributes,
1295bd8deadSopenharmony_ci                                      const int *piAttributes,
1305bd8deadSopenharmony_ci                                      FLOAT *pfValues);
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci    BOOL wglChoosePixelFormatARB(HDC hdc,
1335bd8deadSopenharmony_ci                                 const int *piAttribIList,
1345bd8deadSopenharmony_ci                                 const FLOAT *pfAttribFList,
1355bd8deadSopenharmony_ci                                 UINT nMaxFormats,
1365bd8deadSopenharmony_ci                                 int *piFormats,
1375bd8deadSopenharmony_ci                                 UINT *nNumFormats);
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ciNew Tokens
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci    Accepted in the <piAttributes> parameter array of
1425bd8deadSopenharmony_ci    wglGetPixelFormatAttribivARB, and wglGetPixelFormatAttribfvARB, and
1435bd8deadSopenharmony_ci    as a type in the <piAttribIList> and <pfAttribFList> parameter
1445bd8deadSopenharmony_ci    arrays of wglChoosePixelFormatARB:
1455bd8deadSopenharmony_ci
1465bd8deadSopenharmony_ci        WGL_NUMBER_PIXEL_FORMATS_ARB            0x2000
1475bd8deadSopenharmony_ci        WGL_DRAW_TO_WINDOW_ARB                  0x2001
1485bd8deadSopenharmony_ci        WGL_DRAW_TO_BITMAP_ARB                  0x2002
1495bd8deadSopenharmony_ci        WGL_ACCELERATION_ARB                    0x2003
1505bd8deadSopenharmony_ci        WGL_NEED_PALETTE_ARB                    0x2004
1515bd8deadSopenharmony_ci        WGL_NEED_SYSTEM_PALETTE_ARB             0x2005
1525bd8deadSopenharmony_ci        WGL_SWAP_LAYER_BUFFERS_ARB              0x2006
1535bd8deadSopenharmony_ci        WGL_SWAP_METHOD_ARB                     0x2007
1545bd8deadSopenharmony_ci        WGL_NUMBER_OVERLAYS_ARB                 0x2008
1555bd8deadSopenharmony_ci        WGL_NUMBER_UNDERLAYS_ARB                0x2009
1565bd8deadSopenharmony_ci        WGL_TRANSPARENT_ARB                     0x200A
1575bd8deadSopenharmony_ci        WGL_TRANSPARENT_RED_VALUE_ARB           0x2037
1585bd8deadSopenharmony_ci        WGL_TRANSPARENT_GREEN_VALUE_ARB         0x2038
1595bd8deadSopenharmony_ci        WGL_TRANSPARENT_BLUE_VALUE_ARB          0x2039
1605bd8deadSopenharmony_ci        WGL_TRANSPARENT_ALPHA_VALUE_ARB         0x203A
1615bd8deadSopenharmony_ci        WGL_TRANSPARENT_INDEX_VALUE_ARB         0x203B
1625bd8deadSopenharmony_ci        WGL_SHARE_DEPTH_ARB                     0x200C
1635bd8deadSopenharmony_ci        WGL_SHARE_STENCIL_ARB                   0x200D
1645bd8deadSopenharmony_ci        WGL_SHARE_ACCUM_ARB                     0x200E
1655bd8deadSopenharmony_ci        WGL_SUPPORT_GDI_ARB                     0x200F
1665bd8deadSopenharmony_ci        WGL_SUPPORT_OPENGL_ARB                  0x2010
1675bd8deadSopenharmony_ci        WGL_DOUBLE_BUFFER_ARB                   0x2011
1685bd8deadSopenharmony_ci        WGL_STEREO_ARB                          0x2012
1695bd8deadSopenharmony_ci        WGL_PIXEL_TYPE_ARB                      0x2013
1705bd8deadSopenharmony_ci        WGL_COLOR_BITS_ARB                      0x2014
1715bd8deadSopenharmony_ci        WGL_RED_BITS_ARB                        0x2015
1725bd8deadSopenharmony_ci        WGL_RED_SHIFT_ARB                       0x2016
1735bd8deadSopenharmony_ci        WGL_GREEN_BITS_ARB                      0x2017
1745bd8deadSopenharmony_ci        WGL_GREEN_SHIFT_ARB                     0x2018
1755bd8deadSopenharmony_ci        WGL_BLUE_BITS_ARB                       0x2019
1765bd8deadSopenharmony_ci        WGL_BLUE_SHIFT_ARB                      0x201A
1775bd8deadSopenharmony_ci        WGL_ALPHA_BITS_ARB                      0x201B
1785bd8deadSopenharmony_ci        WGL_ALPHA_SHIFT_ARB                     0x201C
1795bd8deadSopenharmony_ci        WGL_ACCUM_BITS_ARB                      0x201D
1805bd8deadSopenharmony_ci        WGL_ACCUM_RED_BITS_ARB                  0x201E
1815bd8deadSopenharmony_ci        WGL_ACCUM_GREEN_BITS_ARB                0x201F
1825bd8deadSopenharmony_ci        WGL_ACCUM_BLUE_BITS_ARB                 0x2020
1835bd8deadSopenharmony_ci        WGL_ACCUM_ALPHA_BITS_ARB                0x2021
1845bd8deadSopenharmony_ci        WGL_DEPTH_BITS_ARB                      0x2022
1855bd8deadSopenharmony_ci        WGL_STENCIL_BITS_ARB                    0x2023
1865bd8deadSopenharmony_ci        WGL_AUX_BUFFERS_ARB                     0x2024
1875bd8deadSopenharmony_ci
1885bd8deadSopenharmony_ci    Accepted as a value in the <piAttribIList> and <pfAttribFList>
1895bd8deadSopenharmony_ci    parameter arrays of wglChoosePixelFormatARB, and returned in the
1905bd8deadSopenharmony_ci    <piValues> parameter array of wglGetPixelFormatAttribivARB, and the
1915bd8deadSopenharmony_ci    <pfValues> parameter array of wglGetPixelFormatAttribfvARB:
1925bd8deadSopenharmony_ci
1935bd8deadSopenharmony_ci        WGL_NO_ACCELERATION_ARB                 0x2025
1945bd8deadSopenharmony_ci        WGL_GENERIC_ACCELERATION_ARB            0x2026
1955bd8deadSopenharmony_ci        WGL_FULL_ACCELERATION_ARB               0x2027
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci        WGL_SWAP_EXCHANGE_ARB                   0x2028
1985bd8deadSopenharmony_ci        WGL_SWAP_COPY_ARB                       0x2029
1995bd8deadSopenharmony_ci        WGL_SWAP_UNDEFINED_ARB                  0x202A
2005bd8deadSopenharmony_ci
2015bd8deadSopenharmony_ci        WGL_TYPE_RGBA_ARB                       0x202B
2025bd8deadSopenharmony_ci        WGL_TYPE_COLORINDEX_ARB                 0x202C
2035bd8deadSopenharmony_ci
2045bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.2 Specification (OpenGL Operation)
2055bd8deadSopenharmony_ci
2065bd8deadSopenharmony_ci    None
2075bd8deadSopenharmony_ci
2085bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.2 Specification (Rasterization)
2095bd8deadSopenharmony_ci
2105bd8deadSopenharmony_ci    None
2115bd8deadSopenharmony_ci
2125bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and
2135bd8deadSopenharmony_cithe Frame buffer)
2145bd8deadSopenharmony_ci
2155bd8deadSopenharmony_ci    None
2165bd8deadSopenharmony_ci
2175bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.2 Specification (Special Functions)
2185bd8deadSopenharmony_ci
2195bd8deadSopenharmony_ci    None
2205bd8deadSopenharmony_ci
2215bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.2 Specification (State and State Requests)
2225bd8deadSopenharmony_ci
2235bd8deadSopenharmony_ci    None
2245bd8deadSopenharmony_ci
2255bd8deadSopenharmony_ciAdditions to the WGL Specification
2265bd8deadSopenharmony_ci
2275bd8deadSopenharmony_ci    Pixel Formats
2285bd8deadSopenharmony_ci
2295bd8deadSopenharmony_ci    WGL uses pixel format indices to refer to the pixel formats
2305bd8deadSopenharmony_ci    supported by a device. The standard pixel format functions
2315bd8deadSopenharmony_ci    DescribePixelFormat, DescribeLayerPlane, ChoosePixelFormat,
2325bd8deadSopenharmony_ci    SetPixelFormat, and GetPixelFormat specify pixel format attributes
2335bd8deadSopenharmony_ci    using the PIXELFORMATDESCRIPTOR and LAYERPLANEDESCRIPTOR data
2345bd8deadSopenharmony_ci    structures.
2355bd8deadSopenharmony_ci
2365bd8deadSopenharmony_ci    An additional set of functions may be used to query and specify
2375bd8deadSopenharmony_ci    pixel format attributes by name.
2385bd8deadSopenharmony_ci
2395bd8deadSopenharmony_ci    Querying Pixel Format Attributes
2405bd8deadSopenharmony_ci
2415bd8deadSopenharmony_ci    The following two functions can be used to query pixel format
2425bd8deadSopenharmony_ci    attributes by specifying a list of attributes to be queried and
2435bd8deadSopenharmony_ci    providing a buffer in which to receive the results from the query.
2445bd8deadSopenharmony_ci    These functions can be used to query the attributes of both the main
2455bd8deadSopenharmony_ci    plane and layer planes of a given pixel format.
2465bd8deadSopenharmony_ci
2475bd8deadSopenharmony_ci    BOOL wglGetPixelFormatAttribivARB(HDC hdc,
2485bd8deadSopenharmony_ci                                      int iPixelFormat,
2495bd8deadSopenharmony_ci                                      int iLayerPlane,
2505bd8deadSopenharmony_ci                                      UINT nAttributes,
2515bd8deadSopenharmony_ci                                      const int *piAttributes,
2525bd8deadSopenharmony_ci                                      int *piValues);
2535bd8deadSopenharmony_ci
2545bd8deadSopenharmony_ci    <hdc> specifies the device context on which the pixel format is
2555bd8deadSopenharmony_ci    supported.
2565bd8deadSopenharmony_ci
2575bd8deadSopenharmony_ci    <iPixelFormat> is an index that specifies the pixel format. The
2585bd8deadSopenharmony_ci    pixel formats that a device context supports are identified by
2595bd8deadSopenharmony_ci    positive one-based integer indexes.
2605bd8deadSopenharmony_ci
2615bd8deadSopenharmony_ci    <iLayerPlane> specifies which plane is being queried. Positive
2625bd8deadSopenharmony_ci    values of <iLayerPlane> identify overlay planes, where 1 is the
2635bd8deadSopenharmony_ci    first overlay plane over the main plane, 2 is the second overlay
2645bd8deadSopenharmony_ci    plane over the first overlay plane, and so on. Negative values
2655bd8deadSopenharmony_ci    identify underlay planes, where -1 is the first underlay plane under
2665bd8deadSopenharmony_ci    the main plane, -2 is the second underlay plane under the first
2675bd8deadSopenharmony_ci    underlay plane and so on. Use zero for the main plane.
2685bd8deadSopenharmony_ci
2695bd8deadSopenharmony_ci    <nAttributes> number of attributes being queried.
2705bd8deadSopenharmony_ci
2715bd8deadSopenharmony_ci    <piAttributes> list containing an array of pixel format attribute
2725bd8deadSopenharmony_ci    identifiers which specify the attributes to be queried. The
2735bd8deadSopenharmony_ci    following values are accepted:
2745bd8deadSopenharmony_ci
2755bd8deadSopenharmony_ci        WGL_NUMBER_PIXEL_FORMATS_ARB
2765bd8deadSopenharmony_ci        The number of pixel formats for the device context. The
2775bd8deadSopenharmony_ci        <iLayerPlane> and <iPixelFormat> parameters are ignored if this
2785bd8deadSopenharmony_ci        attribute is specified.
2795bd8deadSopenharmony_ci
2805bd8deadSopenharmony_ci        WGL_DRAW_TO_WINDOW_ARB
2815bd8deadSopenharmony_ci        True if the pixel format can be used with a window. The
2825bd8deadSopenharmony_ci        <iLayerPlane> parameter is ignored if this attribute is
2835bd8deadSopenharmony_ci        specified.
2845bd8deadSopenharmony_ci
2855bd8deadSopenharmony_ci        WGL_DRAW_TO_BITMAP_ARB
2865bd8deadSopenharmony_ci        True if the pixel format can be used with a memory bitmap. The
2875bd8deadSopenharmony_ci        <iLayerPlane> parameter is ignored if this attribute is
2885bd8deadSopenharmony_ci        specified.
2895bd8deadSopenharmony_ci
2905bd8deadSopenharmony_ci        WGL_ACCELERATION_ARB
2915bd8deadSopenharmony_ci        Indicates whether the pixel format is supported by the driver.
2925bd8deadSopenharmony_ci        If this is set to WGL_NO_ACCELERATION_ARB then only the software
2935bd8deadSopenharmony_ci        renderer supports this pixel format; if this is set to
2945bd8deadSopenharmony_ci        WGL_GENERIC_ACCELERATION_ARB then the pixel format is supported
2955bd8deadSopenharmony_ci        by an MCD driver; if this is set to WGL_FULL_ACCELERATION_ARB
2965bd8deadSopenharmony_ci        then the pixel format is supported by an ICD driver.
2975bd8deadSopenharmony_ci
2985bd8deadSopenharmony_ci        WGL_NEED_PALETTE_ARB
2995bd8deadSopenharmony_ci        A logical palette is required to achieve the best results for
3005bd8deadSopenharmony_ci        this pixel format. The <iLayerPlane> parameter is ignored if
3015bd8deadSopenharmony_ci        this attribute is specified.
3025bd8deadSopenharmony_ci
3035bd8deadSopenharmony_ci        WGL_NEED_SYSTEM_PALETTE_ARB
3045bd8deadSopenharmony_ci        The hardware supports one hardware palette in 256-color mode
3055bd8deadSopenharmony_ci        only. The <iLayerPlane> parameter is ignored if this attribute
3065bd8deadSopenharmony_ci        is specified.
3075bd8deadSopenharmony_ci
3085bd8deadSopenharmony_ci        WGL_SWAP_LAYER_BUFFERS_ARB
3095bd8deadSopenharmony_ci        True if the pixel format supports swapping layer planes
3105bd8deadSopenharmony_ci        independently of the main planes. If the pixel format does not
3115bd8deadSopenharmony_ci        support a back buffer then this is set to FALSE. The
3125bd8deadSopenharmony_ci        <iLayerPlane> parameter is ignored if this attribute is
3135bd8deadSopenharmony_ci        specified.
3145bd8deadSopenharmony_ci
3155bd8deadSopenharmony_ci        WGL_SWAP_METHOD_ARB
3165bd8deadSopenharmony_ci        If the pixel format supports a back buffer, then this indicates
3175bd8deadSopenharmony_ci        how they are swapped. If this attribute is set to
3185bd8deadSopenharmony_ci        WGL_SWAP_EXCHANGE_ARB then swapping exchanges the front and back
3195bd8deadSopenharmony_ci        buffer contents; if it is set to WGL_SWAP_COPY_ARB then swapping
3205bd8deadSopenharmony_ci        copies the back buffer contents to the front buffer; if it is
3215bd8deadSopenharmony_ci        set to WGL_SWAP_UNDEFINED_ARB then the back buffer contents are
3225bd8deadSopenharmony_ci        copied to the front buffer but the back buffer contents are
3235bd8deadSopenharmony_ci        undefined after the operation. If the pixel format does not
3245bd8deadSopenharmony_ci        support a back buffer then this parameter is set to
3255bd8deadSopenharmony_ci        WGL_SWAP_UNDEFINED_ARB. The <iLayerPlane> parameter is ignored
3265bd8deadSopenharmony_ci        if this attribute is specified.
3275bd8deadSopenharmony_ci
3285bd8deadSopenharmony_ci        WGL_NUMBER_OVERLAYS_ARB
3295bd8deadSopenharmony_ci        The number of overlay planes. The <iLayerPlane> parameter is
3305bd8deadSopenharmony_ci        ignored if this attribute is specified.
3315bd8deadSopenharmony_ci
3325bd8deadSopenharmony_ci        WGL_NUMBER_UNDERLAYS_ARB
3335bd8deadSopenharmony_ci        The number of underlay planes. The <iLayerPlane> parameter is
3345bd8deadSopenharmony_ci        ignored if this attribute is specified.
3355bd8deadSopenharmony_ci
3365bd8deadSopenharmony_ci        WGL_TRANSPARENT_ARB
3375bd8deadSopenharmony_ci        True if transparency is supported.
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ci        WGL_TRANSPARENT_RED_VALUE_ARB
3405bd8deadSopenharmony_ci        Specifies the transparent red color value. Typically this value
3415bd8deadSopenharmony_ci        is the same for all layer planes. This value is undefined if
3425bd8deadSopenharmony_ci        transparency is not supported.
3435bd8deadSopenharmony_ci
3445bd8deadSopenharmony_ci        WGL_TRANSPARENT_GREEN_VALUE_ARB
3455bd8deadSopenharmony_ci        Specifies the transparent green value. Typically this value is
3465bd8deadSopenharmony_ci        the same for all layer planes. This value is undefined if
3475bd8deadSopenharmony_ci        transparency is not supported.
3485bd8deadSopenharmony_ci
3495bd8deadSopenharmony_ci        WGL_TRANSPARENT_BLUE_VALUE_ARB
3505bd8deadSopenharmony_ci        Specifies the transparent blue color value. Typically this value
3515bd8deadSopenharmony_ci        is the same for all layer planes. This value is undefined if
3525bd8deadSopenharmony_ci        transparency is not supported.
3535bd8deadSopenharmony_ci
3545bd8deadSopenharmony_ci        WGL_TRANSPARENT_ALPHA_VALUE_ARB
3555bd8deadSopenharmony_ci        Specifies the transparent alpha value. This is reserved for
3565bd8deadSopenharmony_ci        future use.
3575bd8deadSopenharmony_ci
3585bd8deadSopenharmony_ci        WGL_TRANSPARENT_INDEX_VALUE_ARB
3595bd8deadSopenharmony_ci        Specifies the transparent color index value. Typically this
3605bd8deadSopenharmony_ci        value is the same for all layer planes. This value is undefined
3615bd8deadSopenharmony_ci        if transparency is not supported.
3625bd8deadSopenharmony_ci
3635bd8deadSopenharmony_ci        WGL_SHARE_DEPTH_ARB
3645bd8deadSopenharmony_ci        True if the layer plane shares the depth buffer with the main
3655bd8deadSopenharmony_ci        planes. If <iLayerPlane> is zero, this is always true.
3665bd8deadSopenharmony_ci
3675bd8deadSopenharmony_ci        WGL_SHARE_STENCIL_ARB
3685bd8deadSopenharmony_ci        True if the layer plane shares the stencil buffer with the main
3695bd8deadSopenharmony_ci        planes. If <iLayerPlane> is zero, this is always true.
3705bd8deadSopenharmony_ci
3715bd8deadSopenharmony_ci        WGL_SHARE_ACCUM_ARB
3725bd8deadSopenharmony_ci        True if the layer plane shares the accumulation buffer with the
3735bd8deadSopenharmony_ci        main planes. If <iLayerPlane> is zero, this is always true.
3745bd8deadSopenharmony_ci
3755bd8deadSopenharmony_ci        WGL_SUPPORT_GDI_ARB
3765bd8deadSopenharmony_ci        True if GDI rendering is supported.
3775bd8deadSopenharmony_ci
3785bd8deadSopenharmony_ci        WGL_SUPPORT_OPENGL_ARB
3795bd8deadSopenharmony_ci        True if OpenGL is supported.
3805bd8deadSopenharmony_ci
3815bd8deadSopenharmony_ci        WGL_DOUBLE_BUFFER_ARB
3825bd8deadSopenharmony_ci        True if the color buffer has back/front pairs.
3835bd8deadSopenharmony_ci
3845bd8deadSopenharmony_ci        WGL_STEREO_ARB
3855bd8deadSopenharmony_ci        True if the color buffer has left/right pairs.
3865bd8deadSopenharmony_ci
3875bd8deadSopenharmony_ci        WGL_PIXEL_TYPE_ARB
3885bd8deadSopenharmony_ci        The type of pixel data. This can be set to WGL_TYPE_RGBA_ARB or
3895bd8deadSopenharmony_ci        WGL_TYPE_COLORINDEX_ARB.
3905bd8deadSopenharmony_ci
3915bd8deadSopenharmony_ci        WGL_COLOR_BITS_ARB
3925bd8deadSopenharmony_ci        The number of color bitplanes in each color buffer. For RGBA
3935bd8deadSopenharmony_ci        pixel types, it is the size of the color buffer, excluding the
3945bd8deadSopenharmony_ci        alpha bitplanes. For color-index pixels, it is the size of the
3955bd8deadSopenharmony_ci        color index buffer.
3965bd8deadSopenharmony_ci
3975bd8deadSopenharmony_ci        WGL_RED_BITS_ARB
3985bd8deadSopenharmony_ci        The number of red bitplanes in each RGBA color buffer.
3995bd8deadSopenharmony_ci
4005bd8deadSopenharmony_ci        WGL_RED_SHIFT_ARB
4015bd8deadSopenharmony_ci        The shift count for red bitplanes in each RGBA color buffer.
4025bd8deadSopenharmony_ci
4035bd8deadSopenharmony_ci        WGL_GREEN_BITS_ARB
4045bd8deadSopenharmony_ci        The number of green bitplanes in each RGBA color buffer.
4055bd8deadSopenharmony_ci
4065bd8deadSopenharmony_ci        WGL_GREEN_SHIFT_ARB
4075bd8deadSopenharmony_ci        The shift count for green bitplanes in each RGBA color buffer.
4085bd8deadSopenharmony_ci
4095bd8deadSopenharmony_ci        WGL_BLUE_BITS_ARB
4105bd8deadSopenharmony_ci        The number of blue bitplanes in each RGBA color buffer.
4115bd8deadSopenharmony_ci
4125bd8deadSopenharmony_ci        WGL_BLUE_SHIFT_ARB
4135bd8deadSopenharmony_ci        The shift count for blue bitplanes in each RGBA color buffer.
4145bd8deadSopenharmony_ci
4155bd8deadSopenharmony_ci        WGL_ALPHA_BITS_ARB
4165bd8deadSopenharmony_ci        The number of alpha bitplanes in each RGBA color buffer.
4175bd8deadSopenharmony_ci
4185bd8deadSopenharmony_ci        WGL_ALPHA_SHIFT_ARB
4195bd8deadSopenharmony_ci        The shift count for alpha bitplanes in each RGBA color buffer.
4205bd8deadSopenharmony_ci
4215bd8deadSopenharmony_ci        WGL_ACCUM_BITS_ARB
4225bd8deadSopenharmony_ci        The total number of bitplanes in the accumulation buffer.
4235bd8deadSopenharmony_ci
4245bd8deadSopenharmony_ci        WGL_ACCUM_RED_BITS_ARB
4255bd8deadSopenharmony_ci        The number of red bitplanes in the accumulation buffer.
4265bd8deadSopenharmony_ci
4275bd8deadSopenharmony_ci        WGL_ACCUM_GREEN_BITS_ARB
4285bd8deadSopenharmony_ci        The number of green bitplanes in the accumulation buffer.
4295bd8deadSopenharmony_ci
4305bd8deadSopenharmony_ci        WGL_ACCUM_BLUE_BITS_ARB
4315bd8deadSopenharmony_ci        The number of blue bitplanes in the accumulation buffer.
4325bd8deadSopenharmony_ci
4335bd8deadSopenharmony_ci        WGL_ACCUM_ALPHA_BITS_ARB
4345bd8deadSopenharmony_ci        The number of alpha bitplanes in the accumulation buffer.
4355bd8deadSopenharmony_ci
4365bd8deadSopenharmony_ci        WGL_DEPTH_BITS_ARB
4375bd8deadSopenharmony_ci        The depth of the depth (z-axis) buffer.
4385bd8deadSopenharmony_ci
4395bd8deadSopenharmony_ci        WGL_STENCIL_BITS_ARB
4405bd8deadSopenharmony_ci        The depth of the stencil buffer.
4415bd8deadSopenharmony_ci
4425bd8deadSopenharmony_ci        WGL_AUX_BUFFERS_ARB
4435bd8deadSopenharmony_ci        The number of auxiliary buffers.
4445bd8deadSopenharmony_ci
4455bd8deadSopenharmony_ci    <piValues> points to a buffer into which the results of the query
4465bd8deadSopenharmony_ci    will be placed. Floating point attribute values are rounded to the
4475bd8deadSopenharmony_ci    nearest integer value. The caller must allocate this array and it
4485bd8deadSopenharmony_ci    must have at least <nattributes> entries.
4495bd8deadSopenharmony_ci
4505bd8deadSopenharmony_ci    If the function succeeds, the return value is TRUE. If the function
4515bd8deadSopenharmony_ci    fails, the return value is FALSE. To get extended error information,
4525bd8deadSopenharmony_ci    call GetLastError.
4535bd8deadSopenharmony_ci
4545bd8deadSopenharmony_ci    An error is generated if <piAttributes> contains an invalid
4555bd8deadSopenharmony_ci    attribute, if <iPixelFormat> is not a positive integer or is larger
4565bd8deadSopenharmony_ci    than the number of pixel formats, if <iLayerPlane> doesn't refer to
4575bd8deadSopenharmony_ci    an existing layer plane, or if <hdc> is invalid.
4585bd8deadSopenharmony_ci
4595bd8deadSopenharmony_ci    If FALSE is returned, the contents of <piValues> are undefined.
4605bd8deadSopenharmony_ci
4615bd8deadSopenharmony_ci    BOOL wglGetPixelFormatAttribfvARB(HDC hdc,
4625bd8deadSopenharmony_ci                                      int iPixelFormat,
4635bd8deadSopenharmony_ci                                      int iLayerPlane,
4645bd8deadSopenharmony_ci                                      UINT nAttributes,
4655bd8deadSopenharmony_ci                                      const int *piAttributes,
4665bd8deadSopenharmony_ci                                      FLOAT *pfValues);
4675bd8deadSopenharmony_ci
4685bd8deadSopenharmony_ci    <hdc> specifies the device context on which the pixel format is
4695bd8deadSopenharmony_ci    supported.
4705bd8deadSopenharmony_ci
4715bd8deadSopenharmony_ci    <iPixelFormat> is an index that specifies the pixel format. The
4725bd8deadSopenharmony_ci    pixel formats that a device context supports are identified by
4735bd8deadSopenharmony_ci    positive one-based integer indexes.
4745bd8deadSopenharmony_ci
4755bd8deadSopenharmony_ci    <iLayerPlane> specifies which plane is being queried. Positive
4765bd8deadSopenharmony_ci    values of <iLayerPlane> identify overlay planes, where 1 is the
4775bd8deadSopenharmony_ci    first overlay plane over the main plane, 2 is the second overlay
4785bd8deadSopenharmony_ci    plane over the first overlay plane, and so on. Negative values
4795bd8deadSopenharmony_ci    identify underlay planes, where -1 is the first underlay plane under
4805bd8deadSopenharmony_ci    the main plane, -2 is the second underlay plane under the first
4815bd8deadSopenharmony_ci    underlay plane and so on. Use zero for the main plane.
4825bd8deadSopenharmony_ci
4835bd8deadSopenharmony_ci    <nAttributes> number of attributes being queried.
4845bd8deadSopenharmony_ci
4855bd8deadSopenharmony_ci    <piAttributes> list containing an array of pixel format attribute
4865bd8deadSopenharmony_ci    identifiers which specify the attributes to be queried. The values
4875bd8deadSopenharmony_ci    accepted are the same as for wglGetPixelFormatAttribivARB.
4885bd8deadSopenharmony_ci
4895bd8deadSopenharmony_ci    <pfValues> is a pointer to a buffer into which the results of the
4905bd8deadSopenharmony_ci    query will be placed. Integer attribute values are converted
4915bd8deadSopenharmony_ci    floating point The caller must allocate this array and it must have
4925bd8deadSopenharmony_ci    at least at least <nAttributes> entries.
4935bd8deadSopenharmony_ci
4945bd8deadSopenharmony_ci    If the function succeeds, the return value is TRUE. If the function
4955bd8deadSopenharmony_ci    fails, the return value is FALSE. To get extended error information,
4965bd8deadSopenharmony_ci    call GetLastError.
4975bd8deadSopenharmony_ci
4985bd8deadSopenharmony_ci    An error is generated if <piAttributes> contains an invalid
4995bd8deadSopenharmony_ci    attribute, if <iPixelFormat> is not a positive integer or is larger
5005bd8deadSopenharmony_ci    than the number of pixel formats, if <iLayerPlane> doesn't refer to
5015bd8deadSopenharmony_ci    an existing layer plane, or if <hdc> is invalid.
5025bd8deadSopenharmony_ci
5035bd8deadSopenharmony_ci    If FALSE is returned, the contents of <pfValues> are undefined.
5045bd8deadSopenharmony_ci
5055bd8deadSopenharmony_ci    Supported Pixel Formats
5065bd8deadSopenharmony_ci
5075bd8deadSopenharmony_ci    The maximum index of the pixel formats which can be referenced by
5085bd8deadSopenharmony_ci    the standard pixel format functions is returned by a successful call
5095bd8deadSopenharmony_ci    to DescribePixelFormat. This may be less than the maximum index of
5105bd8deadSopenharmony_ci    the pixel formats which can be referenced by
5115bd8deadSopenharmony_ci    wglGetPixelFormatAttribivARB and wglGetPixelFormatAttribfvARB.
5125bd8deadSopenharmony_ci    (determined by querying WGL_NUMBER_PIXEL_FORMATS_ARB).
5135bd8deadSopenharmony_ci
5145bd8deadSopenharmony_ci    The pixel format of a "displayable" object (e.g. window, bitmap) is
5155bd8deadSopenharmony_ci    specified by passing its index to SetPixelFormat. Therefore, pixel
5165bd8deadSopenharmony_ci    formats which cannot be referenced by the standard pixel format
5175bd8deadSopenharmony_ci    functions are "non displayable".
5185bd8deadSopenharmony_ci
5195bd8deadSopenharmony_ci    Indices are assigned to pixel formats in the following order:
5205bd8deadSopenharmony_ci
5215bd8deadSopenharmony_ci    1. Accelerated pixel formats that are displayable
5225bd8deadSopenharmony_ci
5235bd8deadSopenharmony_ci    2. Accelerated pixel formats that are displayable and which have
5245bd8deadSopenharmony_ci       extended attributes
5255bd8deadSopenharmony_ci
5265bd8deadSopenharmony_ci    3. Generic pixel formats
5275bd8deadSopenharmony_ci
5285bd8deadSopenharmony_ci    4. Accelerated pixel formats that are non displayable
5295bd8deadSopenharmony_ci
5305bd8deadSopenharmony_ci    ChoosePixelFormat will never select pixel formats from either group
5315bd8deadSopenharmony_ci    2 or group 4. Each pixel format in group 2 is required to appear
5325bd8deadSopenharmony_ci    identical to some pixel format in group 1 when queried by
5335bd8deadSopenharmony_ci    DescribePixelFormat. Consequently, ChoosePixelFormat will always
5345bd8deadSopenharmony_ci    select a format from group 1 when it might otherwise have selected a
5355bd8deadSopenharmony_ci    format from group 2. Pixel formats in group 4 cannot be accessed by
5365bd8deadSopenharmony_ci    ChoosePixelFormat at all.
5375bd8deadSopenharmony_ci
5385bd8deadSopenharmony_ci    SetPixelFormat and DescribePixelFormat will only accept pixel
5395bd8deadSopenharmony_ci    formats from groups 1-3. If a non-displayable pixel format is
5405bd8deadSopenharmony_ci    specified to SetPixelFormat or DescribePixelFormat an error will
5415bd8deadSopenharmony_ci    result. These pixel formats are only for use with WGL extensions,
5425bd8deadSopenharmony_ci    such as WGLCreatePbufferARB.
5435bd8deadSopenharmony_ci
5445bd8deadSopenharmony_ci    The following function may be used to select from among all of the
5455bd8deadSopenharmony_ci    available pixel formats (including both accelerated and generic
5465bd8deadSopenharmony_ci    formats and non-displayable formats). This function accepts
5475bd8deadSopenharmony_ci    attributes for the main planes. A list of pixel formats that match
5485bd8deadSopenharmony_ci    the specified attributes is returned with the "best" pixel formats
5495bd8deadSopenharmony_ci    at the start of the list (order is device dependent).
5505bd8deadSopenharmony_ci
5515bd8deadSopenharmony_ci    BOOL wglChoosePixelFormatARB(HDC hdc,
5525bd8deadSopenharmony_ci                                 const int *piAttribIList,
5535bd8deadSopenharmony_ci                                 const FLOAT *pfAttribFList,
5545bd8deadSopenharmony_ci                                 UINT nMaxFormats,
5555bd8deadSopenharmony_ci                                 int *piFormats,
5565bd8deadSopenharmony_ci                                 UINT *nNumFormats);
5575bd8deadSopenharmony_ci
5585bd8deadSopenharmony_ci    <hdc> specifies the device context.
5595bd8deadSopenharmony_ci
5605bd8deadSopenharmony_ci    <piAttribIList> specifies a list of attribute {type, value} pairs
5615bd8deadSopenharmony_ci    containing integer attribute values. All the attributes in
5625bd8deadSopenharmony_ci    <piAttribIList> are followed by the corresponding desired value. The
5635bd8deadSopenharmony_ci    list is terminated with 0. If <piAttribList> is NULL then the result
5645bd8deadSopenharmony_ci    is the same as if <piAttribList> was empty.
5655bd8deadSopenharmony_ci
5665bd8deadSopenharmony_ci    <pfAttribFList> specifies a list of attribute {type, value} pairs
5675bd8deadSopenharmony_ci    containing floating point attribute values. All the attributes in
5685bd8deadSopenharmony_ci    <pfAttribFList> are followed by the corresponding desired value. The
5695bd8deadSopenharmony_ci    list is terminated with 0. If <pfAttribList> is NULL then the result
5705bd8deadSopenharmony_ci    is the same as if <pfAttribList> was empty.
5715bd8deadSopenharmony_ci
5725bd8deadSopenharmony_ci    <nMaxFormats> specifies the maximum number of pixel formats to be
5735bd8deadSopenharmony_ci    returned.
5745bd8deadSopenharmony_ci
5755bd8deadSopenharmony_ci    <piFormats> points to an array of returned indices of the matching
5765bd8deadSopenharmony_ci    pixel formats. The best pixel formats (i.e., closest match and best
5775bd8deadSopenharmony_ci    format for the hardware) are at the head of the list. The caller
5785bd8deadSopenharmony_ci    must allocate this array and it must have at least <nMaxFormats>
5795bd8deadSopenharmony_ci    entries.
5805bd8deadSopenharmony_ci
5815bd8deadSopenharmony_ci    <nNumFormats> returns the number of matching formats. The returned
5825bd8deadSopenharmony_ci    value is guaranteed to be no larger than <nMaxFormats>.
5835bd8deadSopenharmony_ci
5845bd8deadSopenharmony_ci    If the function succeeds, the return value is TRUE. If the function
5855bd8deadSopenharmony_ci    fails the return value is FALSE. To get extended error information,
5865bd8deadSopenharmony_ci    call GetLastError. If no matching formats are found then nNumFormats
5875bd8deadSopenharmony_ci    is set to zero and the function returns TRUE.
5885bd8deadSopenharmony_ci
5895bd8deadSopenharmony_ci    If FALSE is returned, the contents of <piFormats> are undefined.
5905bd8deadSopenharmony_ci
5915bd8deadSopenharmony_ci    wglChoosePixelFormatARB selects pixel formats to return based on the
5925bd8deadSopenharmony_ci    attribute values specified in <piAttribIList> and <pfAttribFList>.
5935bd8deadSopenharmony_ci    Some attribute values must match the pixel format value exactly when
5945bd8deadSopenharmony_ci    the attribute is specified while others specify a minimum criteria,
5955bd8deadSopenharmony_ci    meaning that the pixel format value must meet or exceed the
5965bd8deadSopenharmony_ci    specified value. See the table below for details.
5975bd8deadSopenharmony_ci
5985bd8deadSopenharmony_ci
5995bd8deadSopenharmony_ci     Attribute                      Type        Match Criteria
6005bd8deadSopenharmony_ci
6015bd8deadSopenharmony_ci     WGL_DRAW_TO_WINDOW_ARB         boolean     exact
6025bd8deadSopenharmony_ci     WGL_DRAW_TO_BITMAP_ARB         boolean     exact
6035bd8deadSopenharmony_ci     WGL_ACCELERATION_ARB           enum        exact
6045bd8deadSopenharmony_ci     WGL_NEED_PALETTE_ARB           boolean     exact
6055bd8deadSopenharmony_ci     WGL_NEED_SYSTEM_PALETTE_ARB    boolean     exact
6065bd8deadSopenharmony_ci     WGL_SWAP_LAYER_BUFFERS_ARB     boolean     exact
6075bd8deadSopenharmony_ci     WGL_SWAP_METHOD_ARB            enum        exact
6085bd8deadSopenharmony_ci     WGL_NUMBER_OVERLAYS_ARB        integer     minimum
6095bd8deadSopenharmony_ci     WGL_NUMBER_UNDERLAYS_ARB       integer     minimum
6105bd8deadSopenharmony_ci     WGL_SHARE_DEPTH_ARB            boolean     exact
6115bd8deadSopenharmony_ci     WGL_SHARE_STENCIL_ARB          boolean     exact
6125bd8deadSopenharmony_ci     WGL_SHARE_ACCUM_ARB            boolean     exact
6135bd8deadSopenharmony_ci     WGL_SUPPORT_GDI_ARB            boolean     exact
6145bd8deadSopenharmony_ci     WGL_SUPPORT_OPENGL_ARB         boolean     exact
6155bd8deadSopenharmony_ci     WGL_DOUBLE_BUFFER_ARB          boolean     exact
6165bd8deadSopenharmony_ci     WGL_STEREO_ARB                 boolean     exact
6175bd8deadSopenharmony_ci     WGL_PIXEL_TYPE_ARB             enum        exact
6185bd8deadSopenharmony_ci     WGL_COLOR_BITS_ARB             integer     minimum
6195bd8deadSopenharmony_ci     WGL_RED_BITS_ARB               integer     minimum
6205bd8deadSopenharmony_ci     WGL_GREEN_BITS_ARB             integer     minimum
6215bd8deadSopenharmony_ci     WGL_BLUE_BITS_ARB              integer     minimum
6225bd8deadSopenharmony_ci     WGL_ALPHA_BITS_ARB             integer     minimum
6235bd8deadSopenharmony_ci     WGL_ACCUM_BITS_ARB             integer     minimum
6245bd8deadSopenharmony_ci     WGL_ACCUM_RED_BITS_ARB         integer     minimum
6255bd8deadSopenharmony_ci     WGL_ACCUM_GREEN_BITS_ARB       integer     minimum
6265bd8deadSopenharmony_ci     WGL_ACCUM_BLUE_BITS_ARB        integer     minimum
6275bd8deadSopenharmony_ci     WGL_ACCUM_ALPHA_BITS_ARB       integer     minimum
6285bd8deadSopenharmony_ci     WGL_DEPTH_BITS_ARB             integer     minimum
6295bd8deadSopenharmony_ci     WGL_STENCIL_BITS_ARB           integer     minimum
6305bd8deadSopenharmony_ci     WGL_AUX_BUFFERS_ARB            integer     minimum
6315bd8deadSopenharmony_ci
6325bd8deadSopenharmony_ci    All attributes except WGL_NUMBER_OVERLAYS_ARB, WGL_NUMBER_UNDERLAYS_ARB,
6335bd8deadSopenharmony_ci    WGL_SHARE_DEPTH_ARB, WGL_SHARE_STENCIL_ARB, and WGL_SHARE_ACCUM_ARB
6345bd8deadSopenharmony_ci    apply to the main planes and not to any layer planes. If
6355bd8deadSopenharmony_ci    WGL_SHARE_DEPTH_ARB, WGL_SHARE_STENCIL_ARB, and WGL_SHARE_ACCUM_ARB are
6365bd8deadSopenharmony_ci    specified in either <piAttribList> or <pfAttribList>, then a pixel
6375bd8deadSopenharmony_ci    format will only be selected if it has no overlays or underlays or if
6385bd8deadSopenharmony_ci    all of its overlays and underlays match the specified value.
6395bd8deadSopenharmony_ci    Applications that need to find a pixel format that supports a layer
6405bd8deadSopenharmony_ci    plane with other buffer attributes (such as WGL_SUPPORT_OPENGL_ARB set
6415bd8deadSopenharmony_ci    to TRUE), must go through the list that is returned and call
6425bd8deadSopenharmony_ci    wglGetPixelFormatAttrib*vARB to find one with the appropriate
6435bd8deadSopenharmony_ci    attributes.
6445bd8deadSopenharmony_ci
6455bd8deadSopenharmony_ci    Attributes that are specified in neither <piAttribIList> nor
6465bd8deadSopenharmony_ci    <pfAttribFList> are ignored (i.e., they are not looked at during the
6475bd8deadSopenharmony_ci    selection process). In addition the following attributes are always
6485bd8deadSopenharmony_ci    ignored, even if specified: WGL_NUMBER_PIXEL_FORMATS_ARB,
6495bd8deadSopenharmony_ci    WGL_RED_SHIFT_ARB, WGL_GREEN_SHIFT_ARB, WGL_BLUE_SHIFT_ARB,
6505bd8deadSopenharmony_ci    WGL_ALPHA_SHIFT_ARB, WGL_TRANSPARENT_ARB,
6515bd8deadSopenharmony_ci    WGL_TRANSPARENT_RED_VALUE_ARB,WGL_TRANSPARENT_GREEN_VALUE_ARB,
6525bd8deadSopenharmony_ci    WGL_TRANSPARENT_BLUE_VALUE_ARB, WGL_TRANSPARENT_ALPHA_VALUE_ARB, and
6535bd8deadSopenharmony_ci    WGL_TRANSPARENT_INDEX_ARB.
6545bd8deadSopenharmony_ci
6555bd8deadSopenharmony_ci    If both <piAttribIList> and <pfAttribFList> are NULL or empty then all
6565bd8deadSopenharmony_ci    pixel formats for this device are returned.
6575bd8deadSopenharmony_ci
6585bd8deadSopenharmony_ci    An error is generated if <piAttribIList> or <pfAttribFList> contain an
6595bd8deadSopenharmony_ci    invalid attribute or if <hdc> is invalid.
6605bd8deadSopenharmony_ci
6615bd8deadSopenharmony_ci    Although it is not an error, wglChoosePixelFormat and
6625bd8deadSopenharmony_ci    wglChoosePixelFormatARB should not be used together. It is not necessary
6635bd8deadSopenharmony_ci    to change existing OpenGL programs but application writers should use
6645bd8deadSopenharmony_ci    wglChoosePixelFormatARB whenever possible. New pixel format attributes
6655bd8deadSopenharmony_ci    introduced by extensions (such as the number of multisample buffers)
6665bd8deadSopenharmony_ci    will only be known to the new calls, wglChoosePixelFormatARB and
6675bd8deadSopenharmony_ci    wglGetPixelFormatAttrib*vARB..
6685bd8deadSopenharmony_ci
6695bd8deadSopenharmony_ciNew State
6705bd8deadSopenharmony_ci
6715bd8deadSopenharmony_ci    None
6725bd8deadSopenharmony_ci
6735bd8deadSopenharmony_ciNew Implementation Dependent State
6745bd8deadSopenharmony_ci
6755bd8deadSopenharmony_ci    None
6765bd8deadSopenharmony_ci
6775bd8deadSopenharmony_ciDependencies on WGL_ARB_extensions_string
6785bd8deadSopenharmony_ci
6795bd8deadSopenharmony_ci    Because there is no way to extend WGL, these calls are defined in the
6805bd8deadSopenharmony_ci    ICD and can be called by obtaining the address with wglGetProcAddress.
6815bd8deadSopenharmony_ci    Because this extension is a WGL extension, it is not included in the
6825bd8deadSopenharmony_ci    extension string returned by glGetString. Its existence can be
6835bd8deadSopenharmony_ci    determined with the WGL_ARB_extensions_string extension.
6845bd8deadSopenharmony_ci
6855bd8deadSopenharmony_ciRevision History
6865bd8deadSopenharmony_ci
6875bd8deadSopenharmony_ciChanges from EXT_pixel_format:
6885bd8deadSopenharmony_ci
6895bd8deadSopenharmony_ci   * Added WGL prefix to name to avoid possible name collisions
6905bd8deadSopenharmony_ci   * EXT suffix changed to ARB
6915bd8deadSopenharmony_ci   * Updated to new template, adding contact, status and revision sections
6925bd8deadSopenharmony_ci   * Version is no longer an RCS version
6935bd8deadSopenharmony_ci   * Attribute list passed to wglGetPixelFormatAttrib*v is type const
6945bd8deadSopenharmony_ci   * Separate red,green,blue,alpha and index transparent values
6955bd8deadSopenharmony_ci   * WGL_SWAP_LAYER_BUFFERS and WGL_SWAP_METHOD values defined for single
6965bd8deadSopenharmony_ci     buffered pixel formats
6975bd8deadSopenharmony_ci   * Array of return values for wglGetPixelFormatAttrib*v and
6985bd8deadSopenharmony_ci     wglChoosePixelFormatARB is undefined if function fails
6995bd8deadSopenharmony_ci   * Error returned if iPixelFormat is zero or negative in
7005bd8deadSopenharmony_ci     wglGetPixelFormat*v
7015bd8deadSopenharmony_ci   * Under "Supported Pixel Formats", indicate that SetPixelFormat and
7025bd8deadSopenharmony_ci     DescribePixelFormat do not accept non displayable pixel formats.
7035bd8deadSopenharmony_ci     Passing one in results in an error
7045bd8deadSopenharmony_ci   * If either piAttribIList of pfAttribFList are NULL when
7055bd8deadSopenharmony_ci     wglChoosePixelFormatARB is called then it is as if they were empty
7065bd8deadSopenharmony_ci   * Clarify that wglChoosePixelFormatARB returns TRUE even if no matching
7075bd8deadSopenharmony_ci     formats found
7085bd8deadSopenharmony_ci   * wglChoosePixelFormatARB will only match an overlay attribute (eg,
7095bd8deadSopenharmony_ci     WGL_SHARE_DEPTH_ARB) if there are no overlay planes or if all
7105bd8deadSopenharmony_ci     overlay/underlay plane attributes match the specified criteria
7115bd8deadSopenharmony_ci   * Be careful about using term hardware (change to pixel format where
7125bd8deadSopenharmony_ci     appropriate)
7135bd8deadSopenharmony_ci   * wglChoosePixelFormatARB now ignores the following attributes (in
7145bd8deadSopenharmony_ci     addition to WGL_NUMBER_PIXEL_FORMATS_ARB): WGL_*_SHIFT_ARB,
7155bd8deadSopenharmony_ci     WGL_TRANSPARENT_ARB, WGL_TRANSPARENT_*_VALUE_ARB.
7165bd8deadSopenharmony_ci   * Clarify that new pixel format attributes (eg, attributes introduced by
7175bd8deadSopenharmony_ci     extensions such as multisampling) are only known to the new pixel
7185bd8deadSopenharmony_ci     format calls, wglChoosePixelFormatARB and wglGetPixelFormat*vARB.
7195bd8deadSopenharmony_ci   * Add dependency on WGL_ARB_extensions_string
7205bd8deadSopenharmony_ci
7215bd8deadSopenharmony_ci    03/12/2002  1.1
7225bd8deadSopenharmony_ci        - Updated contact information.
7235bd8deadSopenharmony_ci
7245bd8deadSopenharmony_ci    07/29/2008  1.2
7255bd8deadSopenharmony_ci        - Updated contact information.
7265bd8deadSopenharmony_ci
7275bd8deadSopenharmony_ci    03/25/2009  1.3
7285bd8deadSopenharmony_ci        - mjk: Fixed <nNumFormats> description
729