Loading [MathJax]/extensions/tex2jax.js
  • <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • NVIDIA DRIVE OS Linux SDK API Reference

    6.0.5 Release
    All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
    GL_OES_texture_border_clamp
    Name
    
        OES_texture_border_clamp
    
    Name Strings
    
        GL_OES_texture_border_clamp
    
    Contact
    
        Daniel Koch, NVIDIA (dkoch 'at' nvidia 'dot' com)
    
    Contributors
    
        Jussi Rasanen, NVIDIA
        Greg Roth, NVIDIA
        Dominik Witczak, Mobica
        Graham Connor, Imagination
        Ben Bowman, Imagination
        Jonathan Putsman, Imagination
        Maurice Ribble, Qualcomm
    
    Notice
    
        Copyright (c) 2014 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 ES 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
    
        Approved by the OpenGL ES Working Group
        Ratified by the Khronos Board of Promoters on November 7, 2014
    
    Version
    
        Last Modified Date: June 18, 2014
        Revision: 1
    
    Number
    
        OpenGL ES Extension #215
    
    Dependencies
    
        OpenGL ES 2.0 is required.
    
        This extension is written against the OpenGL ES 3.0.2
        specification.
    
        OpenGL ES 3.0 affects the definition of this extension.
    
        OES_texture_3D affects the definition of this extension.
    
        EXT_texture_compression_s3tc trivially affects the definition
        of this extension.
    
        KHR_texture_compression_astc_{ldr,hdr} trivially affect the
        definition of this extension.
    
    Overview
    
        OpenGL ES provides only a single clamping wrap mode: CLAMP_TO_EDGE.
        However, the ability to clamp to a constant border color can be
        useful to quickly detect texture coordinates that exceed their
        expected limits or to dummy out any such accesses with transparency
        or a neutral color in tiling or light maps.
    
        This extension defines an additional texture clamping algorithm.
        CLAMP_TO_BORDER_OES clamps texture coordinates at all mipmap levels
        such that NEAREST and LINEAR filters of clamped coordinates return
        only the constant border color. This does not add the ability for
        textures to specify borders using glTexImage2D, but only to clamp
        to a constant border value set using glTexParameter and
        glSamplerParameter.
    
    New Procedures and Functions
    
        void TexParameterIivOES(enum target, enum pname, const int *params);
        void TexParameterIuivOES(enum target, enum pname, const uint *params);
    
        void GetTexParameterIivOES(enum target, enum pname, int *params);
        void GetTexParameterIuivOES(enum target, enum pname, uint *params);
    
        void SamplerParameterIivOES(uint sampler, enum pname, const int *params);
        void SamplerParameterIuivOES(uint sampler, enum pname, const uint *params);
    
        void GetSamplerParameterIivOES(uint sampler, enum pname, int *params);
        void GetSamplerParameterIuivOES(uint sampler, enum pname, uint *params);
    
    New Tokens
    
        Accepted by the <pname> parameter of TexParameteriv, TexParameterfv,
        SamplerParameteriv, SamplerParameterfv, TexParameterIivOES,
        TexParameterIuivOES, SamplerParameterIivOES, SamplerParameterIuivOES,
        GetTexParameteriv, GetTexParameterfv, GetTexParameterIivOES,
        GetTexParameterIuivOES, GetSamplerParameteriv, GetSamplerParameterfv,
        GetSamplerParameterIivOES, and GetSamplerParameterIuivOES:
    
            TEXTURE_BORDER_COLOR_OES                         0x1004
    
        Accepted by the <param> parameter of TexParameteri, TexParameterf,
        SamplerParameteri and SamplerParameterf, and by the <params> parameter of
        TexParameteriv, TexParameterfv, TexParameterIivOES, TexParameterIuivOES,
        SamplerParameterIivOES, SamplerParameterIuivOES and returned by the
        <params> parameter of GetTexParameteriv, GetTexParameterfv,
        GetTexParameterIivOES, GetTexParameterIuivOES, GetSamplerParameteriv,
        GetSamplerParameterfv, GetSamplerParameterIivOES, and
        GetSamplerParameterIuivOES when their <pname> parameter
        is TEXTURE_WRAP_S, TEXTURE_WRAP_T, or TEXTURE_WRAP_R:
    
            CLAMP_TO_BORDER_OES                              0x812D
    
        Note that the {Get}TexParameterI{i ui}vOES and
        {Get}SamplerParameterI{i ui}vOES functions also accept all the
        same parameters and values as are accepted by the existing
        {Get}TexParameter{if}v and {Get}SamplerParameter{if}v commands,
        respectively.
    
    Additions to Chapter 3 of the OpenGL ES 3.0.2 Specification
    (Rasterization)
    
        Modifications to Section 3.8.2 "Sampler Objects"
    
        Add the following to the list of SamplerParameter commands (p.123):
    
           void SamplerParameterI{i ui}vOES(uint sampler, enum pname,
                                            const T *params);
    
        Modify the last sentence of the description of the commands to state:
    
        "In the first form of the command, <param> is a value to which to
        set a single-valued parameter; in the remaining forms, <params> is an
        array of parameters whose type depends on the parameter being set."
    
        Replace the last sentence of the 3rd paragraph on p.123 (beginning with
        "The values accepted in the <pname> parameter..." with the following:
    
        "<pname> must be one of the sampler state names in Table 6.10, otherwise
        an INVALID_ENUM error is generated. An INVALID_ENUM error is generated
        if SamplerParameter{if} is called for a non-scalar parameter
        (TEXTURE_BORDER_COLOR_OES)."
    
        Replace the 4th paragraph on p.123 (beginning with "Data conversions...")
        with the following:
    
        "Data conversions are performed as specified in section 2.3.1, except
        that if the values for TEXTURE_BORDER_COLOR_OES are specified with
        a call to SamplerParameterIiv or SamplerParameterIuiv, the values are
        unmodified and stored with an internal data type of integer. If specified
        with SamplerParameteriv, they are converted to floating point using
        equation 2.2. Otherwise, border color values are unmodified and stored
        as floating-point."
    
        Modifications to Section 3.8.6 "Compressed Texture Images"
    
        Add column to Table 3.16 with heading "Border Type" fill in the
        values as follows:
         "unorm" for the following compressed internal formats:
            COMPRESSED_R11_EAC, COMPRESSED_RG11_EAC, COMPRESSED_RGB8_ETC2,
            COMPRESSED_SRGB8_ETC2, COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
            COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, COMPRESSED_RGBA8_ETC2_EAC,
            COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
            COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT1_EXT,
            COMPRESSED_RGBA_S3TC_DXT3_EXT, COMPRESSED_RGBA_S3TC_DXT5_EXT,
            COMPRESSED_RGBA_ASTC_*_KHR, COMPRESSED_SRGB8_ALPHA8_ASTC_*_KHR
         "snorm" for the following compressed internal formats:
            COMPRESSED_SIGNED_R11_EAC, COMPRESSED_SIGNED_RG11_EAC
         "float" for the following compressed internal formats:
            (currently none -- to be added by any extension adding BPTC support)
    
        Add the following to the table caption:
        "The 'Border Type' field determines how border colors are clamped as
        described in section 3.8.10."
    
        Modifications to Section 3.8.7 "Texture Parameters"
    
        Add the following to the list of TexParameter commands (p.223):
    
            void TexParameterI{i ui}vOES(enum target, enum pname,
                                         const T *params);
    
    
        Modify the last sentence of the description of the commands to state:
    
        "In the first form of the command, <param> is a value to which to
        set a single-valued parameter; in the remaining forms, <params> is an
        array of parameters whose type depends on the parameter being set."
    
        Add a new paragraph at the end of p.145 after the paragraph about data
        conversions:
    
        "In addition, if the values for TEXTURE_BORDER_COLOR_OES are specified
        with TexParameterIiv or TexParameterIuiv, the values are unmodified and
        stored with an internal data type of integer or unsigned integer,
        respectively. If specified with TexParameteriv, they are converted to
        floating-point using equation 2.2. Otherwise, the values are unmodified
        and stored as floating-point. An INVALID_ENUM error is generated if
        TexParameter{if} is called for a non-scalar parameters
        (TEXTURE_BORDER_COLOR_OES)."
    
        Modify Table 3.17, edit the following rows (adding
        CLAMP_TO_BORDER_OES to each of the wrap modes):
    
        Name             Type      Legal Values
        ==============   ====   ====================
        TEXTURE_WRAP_S   enum   CLAMP_TO_EDGE, REPEAT, MIRRORED_REPEAT,
                                  CLAMP_TO_BORDER_OES
        TEXTURE_WRAP_T   enum   CLAMP_TO_EDGE, REPEAT, MIRRORED_REPEAT,
                                  CLAMP_TO_BORDER_OES
        TEXTURE_WRAP_R   enum   CLAMP_TO_EDGE, REPEAT, MIRRORED_REPEAT,
                                  CLAMP_TO_BORDER_OES
    
        and add the following row:
    
        Name                      Type       Legal Values
        ==============            ========   ====================
        TEXTURE_BORDER_COLOR_OES  4 floats,  any 4 values
                                  ints, or
                                  uints
    
        Modifications to Section 3.8.9 "Cube Map Texture Selection"
    
        In the "Seamless Cube Map Filtering" subsection change the rule
        about LINEAR filtering to state:
    
        "* If LINEAR filtering is done within a miplevel, always apply
        wrap mode CLAMP_TO_BORDER_OES. Then, ..."
    
        Modifications to Section 3.8.10 "Texture Minification"
    
        Modify Table 3.19, edit the cell that says:
        "border clamping (used only for cube maps with LINEAR filter)"
        and replace it with "CLAMP_TO_BORDER_OES".
    
        In the subsection "Coordinate Wrapping and Texel Selection"
        add the following text at the end of the description for when
        TEXTURE_MIN_FILTER is NEAREST:
    
        "If the selected (i,j,k), (i,j) or i location refers to a border texel
        that satisfies any of the conditions:
            i < 0, j < 0, k < 0, i >= w_t, j >= h_t, k >= d_t
        then the border values defined by TEXTURE_BORDER_COLOR_OES are used
        in place of the non-existent texel.  If the texture contains color
        components, the values of TEXTURE_BORDER_COLOR_OES are interpreted
        as an RGBA color to match the texture's internal format in a manner
        consistent with table 3.11.  The internal data type of the border
        colors must be consistent with the type returned by the texture as
        described in chapter 3, or the result is undefined. Border values are
        clamped before they are used, according to the format in which the
        texture components are stored. For signed and unsigned normalized
        fixed-point formats, border values are clamped to [-1,1] and [0,1]
        respectively. For floating-point and integer formats, border values
        are clamped to the representable range of the format. For compressed
        formats, border values are clamped as signed normalized ("snorm"),
        unsigned normalized ("unorm"), or floating-point as described in
        Table 3.16 for each format.  If the texture contains depth components,
        the first component of TEXTURE_BORDER_COLOR_OES is interpreted as a
        depth value."
    
        Add the following text at the end of the description for when
        TEXTURE_MIN_FILTER is LINEAR:
    
        "For any texel in the equation above that refers to a border texel
        outside the defined range of the image, the texel value is taken
        from the texture border color as with NEAREST filtering."
    
        Modifications to Section 3.7.14 "Texture state"
    
        Modify the second paragraph as follows:
    
        "Next, there are four sets of texture properties... Each set consists
        of the selected minification and magnification filters, the wrap modes
        for s, t, r (three-dimensional only), the TEXTURE_BORDER_COLOR_OES,
        two floating-point numbers ...  In the initial state, ... wrap modes
        are set to REPEAT, and the value of TEXTURE_BORDER_COLOR_OES is
        (0,0,0,0). ..."
    
    Additions to Chapter 6 of the OpenGL ES 3.0.2 Specification
    (State and State Requests)
    
        Modifications to Section 6.1.3 "Enumerated Queries"
    
        Add the following command in a list with GetTexParameter{if}v:
    
            void GetTexParameterI{i ui}v(enum target, enum pname, T *data);
    
        Append the following to the description of the GetTexParameter* commands:
    
        "Querying <pname> TEXTURE_BORDER_COLOR_OES with GetTexParameterIiv or
        GetTexParameterIuiv returns the border color values as signed integers
        or unsigned integers, respectively; otherwise the values are returned
        as described in section 6.1.2. If the border color is queried with a
        type that does not match the original type with which it was specified,
        the result is undefined."
    
        Modifications to Section 6.1.5 "Sampler Queries"
    
        Add the following command in a list with GetSamplerParameter{if}v:
    
            void GetSamplerParameterI{i ui}v(uint sampler, enum pname, T *params);
    
        Append the following to the description of the GetSamplerParameter*
        commands:
    
        "Querying TEXTURE_BORDER_COLOR_OES with GetSamplerParameterIiv or
        GetSamplerParameterIuiv returns the border color values as signed integers
        or unsigned integers, respectively; otherwise the values are returned
        as described in section 6.1.2. If the border color is queried with a
        type that does not match the original type with which it was specified,
        the result is undefined."
    
    Errors
    
        An INVALID_ENUM error is generated if TexParameter{if} is called for
        a non-scalar parameter (TEXTURE_BORDER_COLOR_OES).
    
        An INVALID_ENUM error is generated by TexParameterI*v if
        <target> is not one of the valid types of texture targets accepted
        by TexParameter{if}v.
    
        An INVALID_ENUM error is generated by TexParameterI*v if <pname>
        is not one of the values listed in Table 3.17.
    
        An INVALID_ENUM error is generated by TexParameterI*v if the type
        of the parameter specified by <pname> is enum, and the value(s)
        specified by <params> is not among the legal values shown in
        Table 3.17.
    
        An INVALID_ENUM error is generated by GetTexParameterI*v if
        <target> is not one of the valid types of texture targets accepted
        by GetTexParameter{if}v.
    
        An INVALID_ENUM error is generated by GetTexParameterI*v if
        <pname> is not one of values accepted by GetTexParameter{if}v.
    
        An INVALID_ENUM error is generated if SamplerParameter{if} is called
        for a non-scalar parameter (TEXTURE_BORDER_COLOR_OES).
    
        An INVALID_OPERATION error is generated by SamplerParameterI*v
        if <sampler> is not the name of a sampler object previously returned
        from a call to GenSamplers.
    
        An INVALID_ENUM error is generated by SamplerParameterI*v if
        <pname> is not the name of a parameter accepted by SamplerParameter*.
    
        An INVALID_OPERATION error is generated by GetSamplerParameterI*v
        if <sampler> is not the name of a sampler object previously returned
        from a call to GenSamplers.
    
        An INVALID_ENUM error is generated by GetSamplerParameterI*v if
        <pname> is not the name of a parameter accepted by GetSamplerParameter*.
    
    
    New State
    
        Modify table 6.10:
    
        Change the type information changes for these parameters.
                                                          Initial
        Get Value         Type   Get Command          Value   Description    Sec.
        ---------         ------ -----------          ------- -----------    ----
        TEXTURE_WRAP_S    n x Z4 GetSamplerParameter  (as before...)
        TEXTURE_WRAP_T    n x Z4 GetSamplerParameter  (as before...)
        TEXTURE_WRAP_R    n x Z4 GetSamplerParameter  (as before...)
    
        Add the following parameter:
    
        Get Value                 Type   Get Command          Value           Description   Sec.
        ---------                 ------ -----------          -------         -----------   ----
        TEXTURE_BORDER_COLOR_OES  4 x C  GetSamplerParameter  0.0,0.0,0.0,0.0 border color  3.8
    
    
    Dependencies on OpenGL ES 3.0
    
        If OpenGL ES 3.0 is not supported, but OES_texture_3D is supported,
        replace references to TEXTURE_WRAP_R with TEXTURE_WRAP_R_OES.
    
        If OpenGL ES 3.0 is not supported, delete all references to the
        TexParameterI*, GetTexParameterI*, SamplerParameterI*, and
        GetSamplerParameterI* entry points and all related text about
        signed and unsigned integer textures.
    
    Dependencies on OES_texture_3D
    
        If neither OpenGL ES 3.0 nor OES_texture_3D is supported, ignore all
        references to three-dimensional textures and the token TEXTURE_WRAP_R
        as well as any reference to r wrap modes. References to (i,j,k), k,
        and d_t in section 3.8.10 should also be removed.
    
    Dependencies on EXT_texture_compression_s3tc
    
        If EXT_texture_compression is not supported, ignore all references to
        S3TC compressed textures.
    
    Dependencies on KHR_texture_compression_astc_{ldr,hdr}
    
        If none of the KHR_texture_compression_astc extensions are supported,
        ignore all references to ASTC compressed textures.
    
    Issues
    
        (1) Which is the correct equation to use for converting
        TEXTURE_BORDER_COLOR_OES when specified via SamplerParameteriv
        or TexParameteriv?
    
        RESOLVED: Early versions of GL 4.4 referenced both equations 2.1 and 2.2.
        As per clarification in Bug 11185, the correct answer is equation 2.2.
    
        (2) Does SamplerParmeter{if} set an error if called with
        a non-scalar parameter?
    
        RESOLVED: Yes. This should be analogous to TexParameteriv.
        This error seems to be missing from GL 4.4. Filed bug 11186
        to get this rectified.
    
        (3) Should the second argument to GetTexParameterI* be <value> or <pname>?
    
        RESOLVED: the GL specs call it <value>, but the headers call it <pname>.
        The GetSamplerParameterI* version calls it <pname>, so we are doing the
        same here for consistency. This was corrected in OpenGL ES 3.1.
    
    Revision History
    
        Rev.    Date    Author    Changes
        ----  --------  --------- -------------------------------------------------
         1    06/18/2014   dkoch     Initial OES version based on EXT.
                                     No functional changes.
    
    人人超碰97caoporen国产