back  Return to list

GL_NV_texture_rectangle
homeprevnext Name
  
    NV_texture_rectangle  
  
homeprevnext Name Strings
  
    GL_NV_texture_rectangle  
  
homeprevnext Contact
  
    Mark J. Kilgard, NVIDIA Corporation (mjk 'at' nvidia.com)  
  
homeprevnext Notice
  
    Copyright NVIDIA Corporation, 2000, 2001, 2002, 2003, 2004.  
  
homeprevnext Status
  
    Implemented in NVIDIA's Release 10 drivers.  
  
homeprevnext Version
  
    NVIDIA Date: March 5, 2004  
    $Date$ $Revision$  
    $Id: //sw/main/docs/OpenGL/specs/GL_NV_texture_rectangle.txt#6 $  
  
homeprevnext Number
  
    229  
  
homeprevnext Dependencies
  
    Written based on the OpenGL 1.2.1 specification including  
    ARB_texture_cube_map wording.  
  
    IBM_mirrored_repeat affects the definition of this extension.  
  
    ARB_texture_border_clamp affects the definition of this extension.  
  
    EXT_paletted_texture affects the definition of this extension.  
  
    This extension affects the definition of the NV_texture_shader  
    extension.  
  
homeprevnext Overview
  
    OpenGL texturing is limited to images with power-of-two dimensions  
    and an optional 1-texel border.  NV_texture_rectangle extension  
    adds a new texture target that supports 2D textures without requiring  
    power-of-two dimensions.  
  
    Non-power-of-two dimensioned textures are useful for storing  
    video images that do not have power-of-two dimensions.  Re-sampling  
    artifacts are avoided and less texture memory may be required by using  
    non-power-of-two dimensioned textures.  Non-power-of-two dimensioned  
    textures are also useful for shadow maps and window-space texturing.  
  
    However, non-power-of-two dimensioned (NPOTD) textures have  
    limitations that do not apply to power-of-two dimensioned (POT)  
    textures.  NPOTD textures may not use mipmap filtering; POTD  
    textures support both mipmapped and non-mipmapped filtering.  
    NPOTD textures support only the GL_CLAMP, GL_CLAMP_TO_EDGE,  
    and GL_CLAMP_TO_BORDER_ARB wrap modes; POTD textures support  
    GL_CLAMP_TO_EDGE, GL_REPEAT, GL_CLAMP, GL_MIRRORED_REPEAT_IBM,  
    and GL_CLAMP_TO_BORDER.  NPOTD textures do not support an optional  
    1-texel border; POTD textures do support an optional 1-texel border.  
  
    NPOTD textures are accessed by non-normalized texture coordinates.  
    So instead of thinking of the texture image lying in a [0..1]x[0..1]  
    range, the NPOTD texture image lies in a [0..w]x[0..h] range.  
  
    This extension adds a new texture target and related state (proxy,  
    binding, max texture size).  
  
homeprevnext Issues
  
    Should rectangular textures simply be an extension to the 2D texture  
    target that allows non-power-of-two widths and heights?  
  
      RESOLUTION:  No.  The rectangular texture is an entirely new texture  
      target type called GL_TEXTURE_RECTANGLE_NV.  This is because while  
      the texture rectangle target relaxes the power-of-two dimensions  
      requirements of the texture 2D target, it also has limitations  
      such as the absence of both mipmapping and the GL_REPEAT and  
      GL_MIRRORED_REPEAT_IBM wrap modes.  Additionally, rectangular  
      textures do not use [0..1] normalized texture coordinates.  
  
    How is the image of a rectangular texture specified?  
  
      RESOLUTION:  Using the standard OpenGL API for specifying a 2D  
      texture image: glTexImage2D, glSubTexImage2D, glCopyTexImage2D,  
      and glCopySubTexImage2D.  The target for these commands is  
      GL_TEXTURE_RECTANGLE_NV though.  
  
      This is similar to how the ARB_texture_cube_map extension uses  
      the 2D texture image specification API though with its own texture  
      target.  
  
    Should 3D textures be allowed to be NPOTD?  
      
      RESOLUTION:  No.  That should be left to another extension.  
  
    Should cube map textures be allowed to be NPOTD?  
  
      RESOLUTION:  No.  Probably not particularly interesting for  
      cube maps.  If it becomes important, another extension should  
      provide NPOTD cube maps.  
  
    Should 1D textures be allowed to be NPOTD?  
  
      RESOLUTION:  No.  Rectangular textures are always considered 2D  
      by this extension.  You can always simulate a 1D NPOTD textures  
      by using a 2D Wx1 or 1xH dimensioned rectangular texture.  
  
    Should anything be said about performance?  
  
      RESOLUTION:  No, but developers should not be surprised if  
      conventional POTD textures will render slightly faster than NPOTD  
      textures.  This is particularly likely to be true when NPOTD  
      textures are minified leading to texture cache thrashing.  
  
    How are rectangular textures enabled?  
  
      RESOLUTION:  Since rectangular textures add a new texture target,  
      you enable rectangular textures by enabling this target.  Example:  
  
        glEnable(GL_TEXTURE_RECTANGLE_NV);  
  
    What is the priority of the rectangular texture target enable relative to  
    existing texture enables?  
  
      RESOLUTION:  The texture rectangle target is like a 2D texture in  
      many ways so its enable priority is just above GL_TEXTURE_2D.  From  
      lowest priority to highest priority: GL_TEXTURE_1D, GL_TEXTURE_2D,  
      GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_3D, GL_TEXTURE_CUBE_MAP_ARB.  
  
    What is the default wrap state for a texture rectangle?  
  
      RESOLUTION:  GL_CLAMP_TO_EDGE.  The normal default wrap state is  
      GL_REPEAT, but that mode is not allowed for rectangular textures?  
  
    What is the default minification filter for a texture rectangle?  
  
      RESOLUTION:  GL_LINEAR.  The normal default minification filter  
      state is GL_NEAREST_MIPMAP_LINEAR, but that mode is not allowed  
      for rectangular textures because mipmapping is not supported.  
  
    Do paletted textures work with rectangular textures?  
  
      RESOLUTION:  No.  Similar (but not identical) functionality can  
      be accomplished using dependent texture shader operations (see  
      NV_texture_shader).  
  
      The difference between paletted texture accesses and dependent  
      texture accesses is that paletted texture lookups are  
      "pre-filtering" while dependent texture shader operations are  
      "post-filtering".  
  
    Can compressed texture images be specified for a rectangular texture?  
  
      RESOLUTION:  The generic texture compression internal formats  
      introduced by ARB_texture_compression are supported for rectangular  
      textures because the image is not presented as compressed data and  
      the ARB_texture_compression extension always permits generic texture  
      compression internal formats to be stored in uncompressed form.  
      Implementations are free to support generic compression internal  
      formats for rectangular textures if supported but such support is  
      not required.  
  
      This extensions makes a blanket statement that specific compressed  
      internal formats for use with CompressedTexImage<n>DARB are NOT  
      supported for rectangular textures.  This is because several  
      existing hardware implementations of texture compression formats  
      such as S3TC are not designed for compressing rectangular textures.  
      This does not preclude future texture compression extensions from  
      supporting compressed internal formats that do work with rectangular  
      extensions (by relaxing the current blanket error condition).  
  
    Does this extension work with SGIX_shadow-style shadow mapping?  
  
      RESOLUTION:  Yes.  The one non-obvious allowance to support  
      SGIX_shadow-style shadow mapping is that the R texture coordinate  
      wrap mode remains UNCHANGED for rectangular textures.  Clamping of  
      the R texture coordinate for rectangular textures uses the standard  
      [0,1] interval rather than the [0,ws] or [0,hs] intervals as in  
      the case of S and T.  This is because R represents a depth value  
      in the [0,1] range whether using a 2D or rectangular texture.  
  
homeprevnext New Procedures and Functions
  
    None  
  
homeprevnext New Tokens
  
    Accepted by the <cap> parameter of Enable, Disable, IsEnabled, and  
    by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,  
    and GetDoublev, and by the <target> parameter of BindTexture,  
    GetTexParameterfv, GetTexParameteriv, TexParameterf, TexParameteri,  
    TexParameterfv, and TexParameteriv:  
  
        TEXTURE_RECTANGLE_NV               0x84F5  
  
    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,  
    GetFloatv, and GetDoublev:  
  
        TEXTURE_BINDING_RECTANGLE_NV       0x84F6  
  
    Accepted by the <target> parameter of GetTexImage,  
    GetTexLevelParameteriv, GetTexLevelParameterfv, TexImage2D,  
    CopyTexImage2D, TexSubImage2D, and CopySubTexImage2D:  
  
        TEXTURE_RECTANGLE_NV  
  
    Accepted by the <target> parameter of GetTexLevelParameteriv,  
    GetTexLevelParameterfv, GetTexParameteriv, and TexImage2D:  
  
        PROXY_TEXTURE_RECTANGLE_NV          0x84F7   
  
    Accepted by the <pname> parameter of GetBooleanv, GetDoublev,  
    GetIntegerv, and GetFloatv:  
  
        MAX_RECTANGLE_TEXTURE_SIZE_NV       0x84F8  
  
homeprevnext Additions to Chapter 2 of the GL Specification (OpenGL Operation)
  
    None  
  
homeprevnext Additions to Chapter 3 of the GL Specification (Rasterization)
  
 --  Section 3.6.3 "Pixel Transfer Modes" under "Color Table  
     Specification" or the ColorTableEXT description in the  
     EXT_paletted_texture specification (rev 1.2)  
  
     Add the following statement after introducing ColorTableEXT:  
  
     "The error INVALID_ENUM is generated if the target to ColorTable (or  
     ColorTableEXT or the various ColorTable and ColorTableEXT alternative  
     commands) is TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV."  
  
 --  Section 3.8.1 "Texture Image Specification"  
  
     Change the second sentence through the rest of the paragraph  
     describing TexImage2D on page 116 to:  
  
     "<target> must be one of TEXTURE_2D for a 2D texture, or one  
     of TEXTURE_RECTANGLE_NV for a rectangle texture, or one of  
     TEXTURE_CUBE_MAP_POSITIVE_X_ARB, TEXTURE_CUBE_MAP_NEGATIVE_X_ARB,  
     TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB,  
     TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, or TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB  
     for a cube map texture.  Additionally, <target> can be either  
     PROXY_TEXTURE_2D for a 2D proxy texture or PROXY_TEXTURE_RECTANGLE_NV  
     for a rectangle proxy texture or PROXY_TEXTURE_CUBE_MAP_ARB for a  
     cube map proxy texture as discussed in section 3.8.7.  
     The other parameters match the corresponding parameters of TexImage3D."  
  
     Add a following paragraph reading:  
  
     "Rectangular textures do not support paletted formats.  The error  
     INVALID_ENUM is generated if the target is TEXTURE_RECTANGLE_NV  
     or PROXY_TEXTURE_RECTANGLE_NV and the format is COLOR_INDEX or  
     the internalformat is COLOR_INDEX or one of the COLOR_INDEX<n>_EXT  
     internal formats."  
  
     Change the 14th paragraph (page 116) to read:  
  
     "In a similar fashion, the maximum allowable width of a rectangular  
     texture image, and the maximum allowable height of a rectangular  
     texture image, must be at least the implementation-dependent value  
     of MAX_RECTANGLE_TEXTURE_SIZE_NV."  
  
     Add the following paragraph after the paragraph introducing  
     TexImage2D (page 116):  
  
     "When the target is TEXTURE_RECTANGLE_NV, the INVALID_VALUE error is  
     generated if border is any value other than zero or the level is any  
     value other than zero.  Also when the target is TEXTURE_RECTANGLE_NV,  
     the texture dimension restrictions specified by equations 3.11,  
     3.12, and 3.13 are ignored; however, if the width is less than zero or  
     the height is less than zero, the error INVALID_VALUE is generated.  
     In the case of a rectangular texture, ws and hs equal the specified  
     width and height respectively of the rectangular texture image  
     while ds is 1."  
  
     Amend the following paragraph that was added by the  
     ARB_texture_cube_map specification after the first paragraph on  
     page 117:  
  
     "A 2D texture consists of a single 2D texture image.  A rectangle  
     texture consists of a single 2D texture image.  A cube map texture  
     is a set of six 2D texture images.  The six cube map texture  
     targets form a single cube map texture though each target names  
     a distinct face of the cube map.  The TEXTURE_CUBE_MAP_*_ARB  
     targets listed above update their appropriate cube map face 2D  
     texture image.  Note that the six cube map 2D image tokens such as  
     TEXTURE_CUBE_MAP_POSITIVE_X_ARB are used when specifying, updating,  
     or querying one of a cube map's six 2D image, but when enabling cube  
     map texturing or binding to a cube map texture object (that is when  
     the cube map is accessed as a whole as opposed to a particular 2D  
     image), the TEXTURE_CUBE_MAP_ARB target is specified."  
  
     Append to the end of the third to the last paragraph in the section  
     (page 118):  
  
     "A rectangular texture array has depth dt=1, with height ht and width  
     wt defined by the specified image height and width parameters."  
  
 --  Section 3.8.2 "Alternate Texture Image Specification Commands"  
  
     Add TEXTURE_RECTANGLE_NV to the second paragraph (page 120) to say:  
  
     ... "Currently, <target> must be TEXTURE_2D,  
     TEXTURE_RECTANGLE_NV, TEXTURE_CUBE_MAP_POSITIVE_X_ARB,  
     TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, TEXTURE_CUBE_MAP_POSITIVE_Y_ARB,  
     TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, TEXTURE_CUBE_MAP_POSITIVE_Z_ARB,  
     or TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB." ...  
  
     Add TEXTURE_RECTANGLE_NV to the fourth paragraph (page 121) to say:  
  
     ... "Currently the target arguments of TexSubImage1D and  
     CopyTexSubImage1D must be TEXTURE_1D, the <target> arguments of  
     TexSubImage2D and CopyTexSubImage2D must be one of TEXTURE_2D,  
     TEXTURE_RECTANGLE_NV, TEXTURE_CUBE_MAP_POSITIVE_X_ARB,  
     TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, TEXTURE_CUBE_MAP_POSITIVE_Y_ARB,  
     TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, TEXTURE_CUBE_MAP_POSITIVE_Z_ARB,  
     or TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, and the <target> arguments of  
     TexSubImage3D and CopyTexSubImage3D must be TEXTURE_3D." ...  
  
     Also add to the end of the fourth paragraph (121):  
  
     "If target is TEXTURE_RECTANGLE_NV and level is not zero, the error  
     INVALID_VALUE is generated."  
  
 --  Section "Compressed Texture Images" in the ARB_texture_compression  
     specification  
  
     Add the following paragraph after introducing the  
     CompressedTexImage<n>DARB commands:  
  
     "The error INVALID_ENUM is generated if the target parameter to one  
     of the CompressedTexImage<n>DARB commands is TEXTURE_RECTANGLE_NV."  
  
     Add the following paragraph after introducing the  
     CompressedTexSubImage<n>DARB commands:  
  
     "The error INVALID_ENUM is generated if the target parameter  
     to one of the CompressedTexSubImage<n>DARB commands is  
     TEXTURE_RECTANGLE_NV."  
  
 --  Section 3.8.3 "Texture Parameters"  
  
     Add TEXTURE_RECTANGLE_NV to paragraph one (page 124) to say:  
  
     ... "<target> is the target, either TEXTURE_1D, TEXTURE_2D,  
     TEXTURE_RECTANGLE_NV, TEXTURE_3D, or TEXTURE_CUBE_MAP_ARB." ...  
  
     Add the following paragraph to the end of the section (page 134):  
  
     "Certain texture parameter values may not be specified for textures  
     with a target of TEXTURE_RECTANGLE_NV.  The error INVALID_ENUM  
     is generated if the target is TEXTURE_RECTANGLE_NV and the  
     TEXTURE_WRAP_S, TEXTURE_WRAP_T, or TEXTURE_WRAP_R parameter is set to  
     REPEAT or MIRRORED_REPEAT_IBM.  The error INVALID_ENUM is generated  
     if the target is TEXTURE_RECTANGLE_NV and the TEXTURE_MIN_FILTER is  
     set to a value other than NEAREST or LINEAR (no mipmap filtering  
     is permitted).  The error INVALID_ENUM is generated if the target  
     is TEXTURE_RECTANGLE_NV and TEXTURE_BASE_LEVEL is set to any value  
     other than zero."  
  
 --  Section 3.8.4 "Texture Wrap Modes"  
  
     Add this final additional paragraph:  
  
     "Texture coordinates are clamped differently for rectangular  
     textures.  The r texture coordinate is wrapped as described above (as  
     required for shadow mapping to operate correctly).  When the texture  
     target is TEXTURE_RECTANGLE_NV, the s and t coordinates are wrapped  
     as follows: CLAMP causes the s coordinate to be clamped to the range  
     [0,ws].  CLAMP causes the t coordinate to be clamped to the range  
     [0,hs].  CLAMP_TO_EDGE causes the s coordinate to be clamped to  
     the range [0.5,ws-0.5].  CLAMP_TO_EDGE causes the t coordinate  
     to be clamped to the range [0.5,hs-0.5].  CLAMP_TO_BORDER_ARB  
     causes the s coordinate to be clamped to the range [-0.5,ws+0.5].  
     CLAMP_TO_BORDER_ARB causes the t coordinate to be clamped to the  
     range [-0.5,hs+0.5]."  
  
 --  Section 3.8.5 "Texture Minification" under "Mipmapping"  
  
     Change the second full paragraph on page 126 to read:  
  
     "For non-rectangular textures, let u(x,y) = 2^n*s(x,y), v(x,y) =  
     2^m*t(x,y), and w(x,y) = 2^l*r(x,y), where n, m, and l are defined  
     by equations 3.11, 3.12, and 3.13 with ws, hs, and ds equal to  
     the width, height, and depth of the image array whose level is  
     TEXTURE_BASE_LEVEL.  However, for rectangular textures let u(x,y)  
     = s(x,y), v(x,y) = t(x,y), and w(x,y) = r(x,y)."  
  
     Update the last sentence in the first full paragraph on page 127  
     to read:  
  
     "Depending on whether the texture's target is rectangular or  
     non-rectangular, this means the texel at location (i,j,k) becomes  
     the texture value, with i given by  
  
              /  floor(u),    s < 1  
             /  
        i = {    2^n-1,       s == 1, non-rectangular texture    (3.17)  
             \  
              \  ws-1,        s == 1, rectangular texture  
  
     (Recall that if TEXTURE_WRAP_S is REPEAT, then 0 <= s < 1.)  Similarly,  
     j is found as  
  
              /  floor(v),    t < 1  
             /  
        j = {    2^m-1,       t == 1, non-rectangular texture    (3.18)  
             \  
              \  hs-1,        t == 1, rectangular texture  
  
     and k is found as  
  
              /  floor(w),    r < 1  
             /  
        k = {    2^l-1,       r == 1, non-rectangular texture     (3.19)  
             \    
              \  0,           r == 1, rectangular texture"  
  
     Change the last sentence in the partial paragraph after equation  
     3.19 to read:  
  
     "For a two-dimensional or rectangular texture, k is irrelevant;  
     the texel at location (i,j) becomes the texture value."  
  
     Change the sentence preceding equation 3.20 (page 128) specifying  
     how to compute the value tau for a two-dimensional texture to:  
  
     "For a two-dimensional or rectangular texture,"  
  
     Follow the first full paragraph on page 130 with:  
  
     "Rectangular textures do not support mipmapping (it is an error to  
     specify a minification filter that requires mipmapping)."  
  
 --  Section 3.8.7 "Texture State and Proxy State"  
  
     Change the first sentence of the first paragraph (page 131) to say:  
  
     "The state necessary for texture can be divided into two categories.  
     First, there are the ten sets of mipmap arrays (one each for the  
     one-, two-, and three-dimensional texture targets, one for the  
     rectangular texture target (though the rectangular texture target  
     has only one mipmap level), and six for the cube map texture targets)  
     and their number." ...  
  
     Change the fourth and third to last sentences of the first paragraph  
     to say:  
  
     "In the initial state, the value assigned to TEXTURE_MIN_FILTER  
     is NEAREST_MIPMAP_LINEAR, except for rectangular textures where  
     the initial value is LINEAR, and the value for TEXTURE_MAG_FILTER  
     is LINEAR.  s, t, and r warp modes are all set to REPEAT, except  
     for rectangular textures where the initial value is CLAMP_TO_EDGE."  
  
     Change the second paragraph (page 132) to say:  
  
     "In addition to the one-, two-, three-dimensional, rectangular, and  
     the six cube map sets of image arrays, the partially instantiated  
     one-, two-, and three-dimensional, rectangular, and one cube map  
     sets of proxy image arrays are maintained." ...  
  
     Change the third paragraph (page 132) to:  
  
     "One- and two-dimensional and rectangular proxy arrays are operated  
     on in the same way when TexImage1D is executed with target specified  
     as PROXY_TEXTURE_1D, or TexImage2D is executed with target specified  
     as PROXY_TEXTURE_2D or PROXY_TEXTURE_RECTANGLE_NV."  
  
     Change the second sentence of the fourth paragraph (page 132) to:  
  
     "Therefore PROXY_TEXTURE_1D, PROXY_TEXTURE_2D,  
     PROXY_TEXTURE_RECTANGLE_NV, PROXY_TEXTURE_3D, and  
     PROXY_TEXTURE_CUBE_MAP_ARB cannot be used as textures, and their  
     images must never be queried using GetTexImage." ...  
  
 --  Section 3.8.8 "Texture Objects"  
  
     Change the first sentence of the first paragraph (page 132) to say:  
  
     "In addition to the default textures TEXTURE_1D, TEXTURE_2D,  
     TEXTURE_RECTANGLE_NV, TEXTURE_3D, and TEXTURE_CUBE_MAP_ARB, named  
     one-dimensional, two-dimensional, rectangular, and three-dimensional  
     texture objects and cube map texture objects can be created and  
     operated on." ...  
  
     Change the second paragraph (page 132) to say:  
  
     "A texture object is created by binding an unused name to  
     TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_NV, TEXTURE_3D, or  
     TEXTURE_CUBE_MAP_ARB." ...  "If the new texture object is bound  
     to TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_NV, TEXTURE_3D, or  
     TEXTURE_CUBE_MAP_ARB, it remains a one-dimensional, two-dimensional,  
     rectangular, three-dimensional, or cube map texture until it is  
     deleted."  
  
     Change the third paragraph (page 133) to say:  
  
     "BindTexture may also be used to bind an existing texture object  
     to either TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_NV, TEXTURE_3D,  
     or TEXTURE_CUBE_MAP_ARB."  
  
     Change paragraph five (page 133) to say:  
  
     "In the initial state, TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_NV,  
     TEXTURE_3D, and TEXTURE_CUBE_MAP have one-dimensional,  
     two-dimensional, rectangular, three-dimensional, and cube map state  
     vectors associated with them respectively."  ...  "The initial,  
     one-dimensional, two-dimensional, rectangular, three-dimensional, and  
     cube map texture is therefore operated upon, queried, and applied  
     as TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_NV, TEXTURE_3D,  
     and TEXTURE_CUBE_MAP_ARB respectively while 0 is bound to the  
     corresponding targets."  
  
     Change paragraph six (page 133) to say:  
  
     ... "If a texture that is currently bound to one of the targets  
     TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_NV, TEXTURE_3D, or  
     TEXTURE_CUBE_MAP_ARB is deleted, it is as though BindTexture has  
     been executed with the same <target> and <texture> zero." ...  
  
 --  Section 3.8.10 "Texture Application"  
  
     Replace the beginning sentences of the first paragraph (page 138)  
     with:  
  
     "Texturing is enabled or disabled using the generic Enable and  
     Disable commands, respectively, with the symbolic constants  
     TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_NV, TEXTURE_3D,  
     or TEXTURE_CUBE_MAP_ARB to enable the one-dimensional,  
     two-dimensional, rectangular, three-dimensional, or cube map  
     texturing respectively.  If both two- and one-dimensional textures  
     are enabled, the two-dimensional texture is used.  If the rectangular  
     and either of the two- or one-dimensional textures is enabled, the  
     rectangular texture is used.  If the three-dimensional and any of the  
     rectangular, two-dimensional, or one-dimensional textures is enabled,  
     the three-dimensional texture is used.  If the cube map texture  
     and any of the three-dimensional, rectangular, two-dimensional,  
     or one-dimensional textures is enabled, then cube map texturing is  
     used.   
  
homeprevnext Additions to Chapter 4 of the GL Specification (Per-Fragment Operations and the Framebuffer)
  
    None  
  
homeprevnext Additions to Chapter 5 of the GL Specification (Special Functions)
  
 --  Section 5.4 "Display Lists"  
  
     In the first paragraph (page 179), add PROXY_TEXTURE_RECTANGLE_NV  
     to the list of PROXY_* tokens.  
  
homeprevnext Additions to Chapter 6 of the GL Specification (State and State Requests)
  
 --  Section 6.1.3 "Enumerated Queries"  
  
     Change the fourth paragraph (page 183) to say:  
  
     "The GetTexParameter parameter <target> may be one of  
     TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_NV, TEXTURE_3D, or  
     TEXTURE_CUBE_MAP_ARB, indicating the currently bound one-dimensional,  
     two-dimensional, rectangular, three-dimensional, or cube map  
     texture object.  For GetTexLevelParameter, <target> may be one  
     of TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_NV, TEXTURE_3D,  
     TEXTURE_CUBE_MAP_POSITIVE_X_ARB, TEXTURE_CUBE_MAP_NEGATIVE_X_ARB,  
     TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB,  
     TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB,  
     PROXY_TEXTURE_1D, PROXY_TEXTURE_2D, PROXY_TEXTURE_RECTANGLE_NV,  
     PROXY_TEXTURE_3D, or PROXY_TEXTURE_CUBE_MAP_ARB, indicating the  
     one-dimensional texture object, two-dimensional texture object,  
     rectangular texture object, three-dimensional texture object, or one  
     of the six distinct 2D images making up the cube map texture object  
     or one-dimensional, two-dimensional, rectangular, three-dimensional,  
     or cube map proxy state vector.  Note that TEXTURE_CUBE_MAP_ARB is  
     not a valid <target> parameter for GetTexLevelParameter because it  
     does not specify a particular cube map face."  
  
 --  Section 6.1.4 "Texture Queries"  
  
     Change the first paragraph (page 184) to read:  
  
     ... "It is somewhat different from the other get commands; <tex> is a  
     symbolic value indicating which texture (or texture face in the case  
     of a cube map texture target name) is to be obtained.  TEXTURE_1D  
     indicates a one-dimensional texture, TEXTURE_2D indicates a  
     two-dimensional texture, TEXTURE_RECTANGLE_NV indicates a rectangular  
     texture, TEXTURE_3D indicates a three-dimensional texture, and  
     TEXTURE_CUBE_MAP_POSITIVE_X_ARB, TEXTURE_CUBE_MAP_NEGATIVE_X_ARB,  
     TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB,  
     TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, and TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB  
     indicate the respective face of a cube map texture."  
  
     Add a final sentence to the fourth paragraph:  
  
     "Calling GetTexImage with a lod not zero when the tex is  
     TEXTURE_RECTANGLE_NV causes the error INVALID_VALUE."  
  
homeprevnext Additions to the GLX Specification
  
    None  
  
homeprevnext GLX Protocol
  
    None  
  
homeprevnext Dependencies on ARB_texture_border_clamp
  
    If ARB_texture_border_clamp is not supported, references to the  
    CLAMP_TO_BORDER_ARB wrap mode in this document should be ignored.  
  
homeprevnext Dependencies on IBM_mirrored_repeat
  
    If IBM_mirrored_repeat is not supported, references to the  
    MIRRORED_REPEAT_IBM wrap mode in this document should be ignored.  
  
homeprevnext Dependencies on EXT_paletted_texture
  
    If EXT_paletted_texture is not supported, references to the  
    COLOR_INDEX, COLOR_INDEX<n>_EXT, ColorTable, and ColorTableEXT should  
    be ignored.  
  
homeprevnext Dependencies on EXT_texture_compression_s3tc
  
    If EXT_texture_compression_s3tc is not supported, references  
    to CompressedTexImage2DARB and CompressedTexSubImageARB and the  
    COMPRESSED_*_S3TC_DXT*_EXT enumerants should be ignored.  
  
homeprevnext Errors
  
    INVALID_ENUM is generated when ColorTable (or ColorTableEXT or the  
    various ColorTable and ColorTableEXT alternative commands) is called  
    and the target is TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV.  
  
    INVALID_ENUM is generated when TexImage2D is called and the target  
    is TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV and the format  
    is COLOR_INDEX or the internalformat is COLOR_INDEX or one of the  
    COLOR_INDEX<n>_EXT internal formats.  
  
    INVALID_VALUE is generated when TexImage2D is called when the target  
    is TEXTURE_RECTANGLE_NV if border is any value other than zero or  
    the level is any value other than zero.  
  
    INVALID_VALUE is generated when TexImage2D is called when the target  
    is TEXTURE_RECTANGLE_NV if the width is less than zero or the height  
    is less than zero.  
  
    INVALID_VALUE is generated when TexSubImage2D or CopyTexSubImage2D  
    is called when the target is TEXTURE_RECTANGLE_NV if the level is  
    any value other than zero.  
  
    INVALID_ENUM is generated when one of the CompressedTexImage<n>DARB  
    commands is called when the target parameter is TEXTURE_RECTANGLE_NV.  
  
    INVALID_ENUM is generated when one of the CompressedTexSubImage<n>DARB  
    commands is called when the target parameter is TEXTURE_RECTANGLE_NV.  
  
    INVALID_ENUM is generated when TexParameter is called with a  
    target of TEXTURE_RECTANGLE_NV and the TEXTURE_WRAP_S, TEXTURE_WRAP_T,  
    or TEXTURE_WRAP_R parameter is set to REPEAT or MIRRORED_REPEAT_IBM.  
  
    INVALID_ENUM is generated when TexParameter is called with a  
    target of TEXTURE_RECTANGLE_NV and the TEXTURE_MIN_FILTER is set to  
    a value other than NEAREST or LINEAR.  
  
    INVALID_VALUE is generated when TexParameter is called with a  
    target of TEXTURE_RECTANGLE_NV and the TEXTURE_BASE_LEVEL is set to  
    any value other than zero.  
  
    INVALID_VALUE is generated when GetTexImage is called with a lod  
    not zero when the tex is TEXTURE_RECTANGLE_NV.  
  
homeprevnext New State
  
(table 6.12, p202) amend/add the following entries:  
  
Get Value                     Type  Get Command  Initial Value  Description            Sec     Attribute  
----------------------------  ----  -----------  -------------  ---------------------  ------  --------------  
TEXTURE_RECTANGULAR_NV        B     IsEnabled    False          True if rectangular    3.8.10  texture/enable  
                                                                texturing is enabled  
TEXTURE_BINDING_RECTANGLE_NV  Z+    GetIntegerv  0              Texture object         3.8.8   texture  
                                                                for texture rectangle  
TEXTURE_RECTANGLE_NV          I     GetTexImage  see 3.8        rectangular texture    3.8     -  
                                                                image for lod 0  
  
  
(table 6.13, p203) amend/add the following entries:  
  
Get Value           Type   Get Command      Initial Value          Description           Sec    Attribute  
------------------  -----  ---------------  ---------------------  --------------------  -----  ---------  
TEXTURE_MIN_FILTER  2+xZ6  GetTexparameter  NEAREST_MIPMAP_LINEAR  Texture minification  3.8.5  texture  
                                            except for             function  
                                            rectangular which is  
                                            LINEAR  
TEXTURE_WRAP_S      5+xZ5  GetTexParameter  REPEAT except          Texture wrap mode S   3.8    texture  
                                            for rectangular  
                                            which is  
                                            CLAMP_TO_EDGE  
TEXTURE_WRAP_T      5+xZ5  GetTexParameter  REPEAT except          Texture wrap mode T   3.8    texture  
                                            for rectangular  
                                            which is  
                                            CLAMP_TO_EDGE  
TEXTURE_WRAP_R      5+xZ5  GetTexParameter  REPEAT except          Texture wrap mode R   3.8    texture  
                                            for rectangular  
                                            which is  
                                            CLAMP_TO_EDGE  
  
homeprevnext New Implementation Dependent State
  
(table 6.24, p214) add the following entry:  
  
Get Value                      Type  Get Command  Minimum Value  Description          Sec    Attribute  
-----------------------------  ----  -----------  -------------  -------------------  -----  ---------  
MAX_RECTANGLE_TEXTURE_SIZE_NV  Z+    GetIntegerv  64             Maximum rectangular  3.8.1  -  
                                                                 texture image  
                                                                 dimension  
  
homeprevnext Revision History
  
    Jan 2, 2003 - Fix typo in 4th paragraph of Overview to read: "NPOTD  
    textures are accessed by non-normalized texture coordinates."  
  
    March 5, 2004 - Delete update to the convolution section because  
    it was bogus language in the OpenGL 1.2.1 specification saying  
    convolution affects glGetTexImage (it does not); this language was  
    deleted in OpenGL 1.3.  Fix minor typo in 6.12 table.  
    deleted in OpenGL 1.3.  Fix minor typo in 6.12 table.  
Valid XHTML 1.1! Valid CSS! Last update: November 14, 2006.
Cette page doit être lue avec un navigateur récent respectant le standard XHTML 1.1.