15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci    
35bd8deadSopenharmony_ci     EXT_texture_cube_map
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci     GL_EXT_texture_cube_map
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciVersion
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    August 19, 1999
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciNumber
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    ??
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ciDependencies
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ci    None.
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    Written based on the wording of the OpenGL 1.2 specification but
225bd8deadSopenharmony_ci    not dependent on it.
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ciOverview
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ci    This extension provides a new texture generation scheme for cube
275bd8deadSopenharmony_ci    map textures.  Instead of the current texture providing a 1D, 2D,
285bd8deadSopenharmony_ci    or 3D lookup into a 1D, 2D, or 3D texture image, the texture is a
295bd8deadSopenharmony_ci    set of six 2D images representing the faces of a cube.  The (s,t,r)
305bd8deadSopenharmony_ci    texture coordinates are treated as a direction vector emanating from
315bd8deadSopenharmony_ci    the center of a cube.  At texture generation time, the interpolated
325bd8deadSopenharmony_ci    per-fragment (s,t,r) selects one cube face 2D image based on the
335bd8deadSopenharmony_ci    largest magnitude coordinate (the major axis).  A new 2D (s,t) is
345bd8deadSopenharmony_ci    calculated by dividing the two other coordinates (the minor axes
355bd8deadSopenharmony_ci    values) by the major axis value.  Then the new (s,t) is used to
365bd8deadSopenharmony_ci    lookup into the selected 2D texture image face of the cube map.
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ci    Unlike a standard 1D, 2D, or 3D texture that have just one target,
395bd8deadSopenharmony_ci    a cube map texture has six targets, one for each of its six 2D texture
405bd8deadSopenharmony_ci    image cube faces.  All these targets must be consistent, complete,
415bd8deadSopenharmony_ci    and have a square dimension.
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    This extension also provides two new texture coordinate generation modes
445bd8deadSopenharmony_ci    for use in conjunction with cube map texturing.  The reflection map
455bd8deadSopenharmony_ci    mode generates texture coordinates (s,t,r) matching the vertex's
465bd8deadSopenharmony_ci    eye-space reflection vector.  The reflection map mode
475bd8deadSopenharmony_ci    is useful for environment mapping without the singularity inherent
485bd8deadSopenharmony_ci    in sphere mapping.  The normal map mode generates texture coordinates
495bd8deadSopenharmony_ci    (s,t,r) matching the vertex's transformed eye-space
505bd8deadSopenharmony_ci    normal.  The normal map mode is useful for sophisticated cube
515bd8deadSopenharmony_ci    map texturing-based diffuse lighting models.
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    The intent of the new texgen functionality is that an application using
545bd8deadSopenharmony_ci    cube map texturing can use the new texgen modes to automatically
555bd8deadSopenharmony_ci    generate the reflection or normal vectors used to look up into the
565bd8deadSopenharmony_ci    cube map texture.
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ci    An application note:  When using cube mapping with dynamic cube
595bd8deadSopenharmony_ci    maps (meaning the cube map texture is re-rendered every frame),
605bd8deadSopenharmony_ci    by keeping the cube map's orientation pointing at the eye position,
615bd8deadSopenharmony_ci    the texgen-computed reflection or normal vector texture coordinates
625bd8deadSopenharmony_ci    can be always properly oriented for the cube map.  However if the
635bd8deadSopenharmony_ci    cube map is static (meaning that when view changes, the cube map
645bd8deadSopenharmony_ci    texture is not updated), the texture matrix must be used to rotate
655bd8deadSopenharmony_ci    the computed texgen-computed reflection or normal vector texture
665bd8deadSopenharmony_ci    coordinates to match the orientation of the cube map.  The rotation
675bd8deadSopenharmony_ci    can be computed based on two vectors: 1) the direction vector from
685bd8deadSopenharmony_ci    the cube map center to the eye position (both in world coordinates),
695bd8deadSopenharmony_ci    and 2) the cube map orientation in world coordinates.  The axis of
705bd8deadSopenharmony_ci    rotation is the cross product of these two vectors; the angle of
715bd8deadSopenharmony_ci    rotation is the arcsin of the dot product of these two vectors. 
725bd8deadSopenharmony_ci
735bd8deadSopenharmony_ciIssues
745bd8deadSopenharmony_ci
755bd8deadSopenharmony_ci    Should we place the normal/reflection vector in the (s,t,r) texture
765bd8deadSopenharmony_ci    coordinates or (s,t,q) coordinates?
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci      RESOLUTION:  (s,t,r).  Even if the proposed hardware uses "q" for
795bd8deadSopenharmony_ci      the third component, the API should claim to support generation of
805bd8deadSopenharmony_ci      (s,t,r) and let the texture matrix (through a concatenation with
815bd8deadSopenharmony_ci      the user-supplied texture matrix) move "r" into "q".
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ci    Should the texture coordinate generation functionality for cube
845bd8deadSopenharmony_ci    mapping be specified as a distinct extension from the actual cube
855bd8deadSopenharmony_ci    map texturing functionality.
865bd8deadSopenharmony_ci
875bd8deadSopenharmony_ci      RESOLUTION:  NO.  Real applications and real implementations of
885bd8deadSopenharmony_ci      cube mapping will tie the texgen and texture generation functionality
895bd8deadSopenharmony_ci      together.  One isn't very useful without the other.
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci      While applications will almost always want to use the texgen
925bd8deadSopenharmony_ci      functionality for automatically generating the reflection or normal
935bd8deadSopenharmony_ci      vector as texture coordinates (s,t,r), this extension does permit
945bd8deadSopenharmony_ci      an application to manually supply the reflection or normal vector
955bd8deadSopenharmony_ci      through glTexCoord3f explicitly.
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ci    Should you be able to have some texture coordinates computing
985bd8deadSopenharmony_ci    REFLECTION_MAP_EXT and others not?  Same question with NORMAL_MAP_EXT.
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ci      RESOLUTION:  YES. This is the way that SPHERE_MAP works.  It is
1015bd8deadSopenharmony_ci      not clear that this would ever be useful though.
1025bd8deadSopenharmony_ci
1035bd8deadSopenharmony_ci    Should something special be said about the handling of the q
1045bd8deadSopenharmony_ci    texture coordinate for this spec?
1055bd8deadSopenharmony_ci
1065bd8deadSopenharmony_ci      RESOLUTION:  NO.  But the following paragraph is useful for
1075bd8deadSopenharmony_ci      implementors concerned about the handling of q.
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci      The REFLECTION_MAP_EXT and NORMAL_MAP_EXT modes are intended to supply
1105bd8deadSopenharmony_ci      reflection and normal vectors for cube map texturing hardware.
1115bd8deadSopenharmony_ci      When these modes are used for cube map texturing, the generated
1125bd8deadSopenharmony_ci      texture coordinates can be thought of as an reflection vector.
1135bd8deadSopenharmony_ci      The value of the q texture coordinate then simply scales the
1145bd8deadSopenharmony_ci      vector but does not change its direction.  Because only the vector
1155bd8deadSopenharmony_ci      direction (not the vector magnitude) matters for cube map texturing,
1165bd8deadSopenharmony_ci      implementations are free to leave q undefined when any of the s,
1175bd8deadSopenharmony_ci      t, or r texture coordinates are generated using REFLECTION_MAP_EXT
1185bd8deadSopenharmony_ci      or NORMAL_MAP_EXT.
1195bd8deadSopenharmony_ci
1205bd8deadSopenharmony_ci      For the proposed hardware, there is not an r texture coordinate
1215bd8deadSopenharmony_ci      datapath (since 3D texturing is not supported) so the cube map
1225bd8deadSopenharmony_ci      texturing block uses the q datapath for passing r in cube map
1235bd8deadSopenharmony_ci      texturing mode.  This means that when cube map texturing (the
1245bd8deadSopenharmony_ci      texturing functionality, not the texgen functionality) is enabled,
1255bd8deadSopenharmony_ci      the OpenGL implementation must use the texture matrix to switch the
1265bd8deadSopenharmony_ci      outputted r and q.
1275bd8deadSopenharmony_ci
1285bd8deadSopenharmony_ci    How should the cube faces be labeled?
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci      RESOLUTION:  Match the render man specification's names of "px"
1315bd8deadSopenharmony_ci      (positive X), "nx" (negative x), "py", "ny", "pz", and "nz".
1325bd8deadSopenharmony_ci      There does not actually need to be an "ordering for the faces"
1335bd8deadSopenharmony_ci      (Direct3D 7.0 does number their cube map faces.)  For this
1345bd8deadSopenharmony_ci      extension, the symbolic target names (TEXTURE_CUBE_MAP_POSITIVE_X,
1355bd8deadSopenharmony_ci      etc) is sufficient without requiring any specific ordering.
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ci    What coordinate system convention should be used?  LHS or RHS?
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci      RESOLUTION:  The coordinate system is left-handed if you think
1405bd8deadSopenharmony_ci      of yourself within the cube.  The coordinate system is
1415bd8deadSopenharmony_ci      right-handed if you think of yourself outside the cube.
1425bd8deadSopenharmony_ci
1435bd8deadSopenharmony_ci      This matches the convention of the RenderMan interface.  If
1445bd8deadSopenharmony_ci      you look at Figure 12.8 (page 265) in "The RenderMan Companion",
1455bd8deadSopenharmony_ci      think of the cube being folded up with the observer inside
1465bd8deadSopenharmony_ci      the cube.  Then the coordinate system convention is
1475bd8deadSopenharmony_ci      left-handed.
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci    We plan on interpolating the reflection vectors computed per-vertex
1505bd8deadSopenharmony_ci    across polygons in the proposed hardware.  Is there a problem
1515bd8deadSopenharmony_ci    interpolating reflection vectors in this way?
1525bd8deadSopenharmony_ci
1535bd8deadSopenharmony_ci      Probably.  The better approach would be to interpolate the eye
1545bd8deadSopenharmony_ci      vector and normal vector over the polygon and perform the reflection
1555bd8deadSopenharmony_ci      vector computation on a per-fragment basis.  Not doing so is likely
1565bd8deadSopenharmony_ci      to lead to artifacts because angular changes in the normal vector
1575bd8deadSopenharmony_ci      result in twice as large a change in the reflection vector as normal
1585bd8deadSopenharmony_ci      vector changes.  The effect is likely to be reflections that become
1595bd8deadSopenharmony_ci      glancing reflections too fast over the surface of the polygon.
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ci      Note that this is an issue for REFLECTION_MAP_EXT, but not
1625bd8deadSopenharmony_ci      NORMAL_MAP_EXT.
1635bd8deadSopenharmony_ci   
1645bd8deadSopenharmony_ci    What happens if an (s,t,q) is passed to cube map generation that
1655bd8deadSopenharmony_ci    is close to (0,0,0), ie. a degenerate direction vector?
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci      RESOLUTION:  Leave undefined what happens in this case (but
1685bd8deadSopenharmony_ci      may not lead to GL interruption or termination).
1695bd8deadSopenharmony_ci
1705bd8deadSopenharmony_ci      Note that a vector close to (0,0,0) may be generated as a
1715bd8deadSopenharmony_ci      result of the per-fragment interpolation of (s,t,r) between
1725bd8deadSopenharmony_ci      vertices.
1735bd8deadSopenharmony_ci
1745bd8deadSopenharmony_ci    Do we need a distinct proxy texture mechanism for cube map
1755bd8deadSopenharmony_ci    textures?
1765bd8deadSopenharmony_ci
1775bd8deadSopenharmony_ci      RESOLUTION:  YES.  Cube map textures take up six times the
1785bd8deadSopenharmony_ci      memory as a conventional 2D image texture so proxy 2D texture
1795bd8deadSopenharmony_ci      determinations won't be of value for a cube map texture.
1805bd8deadSopenharmony_ci      Cube maps need their own proxy target.
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ci    Should we require the 2D texture image width and height to
1835bd8deadSopenharmony_ci    be identical (ie, square only)?
1845bd8deadSopenharmony_ci
1855bd8deadSopenharmony_ci      RESOLUTION:  YES.  The proposed hardware has this limitation
1865bd8deadSopenharmony_ci      and it is quite a reasonable limitation anyway!
1875bd8deadSopenharmony_ci
1885bd8deadSopenharmony_ci      This restriction is enforced by generating an INVALID_VALUE
1895bd8deadSopenharmony_ci      when calling TexImage2D or CopyTexImage2D with a non-equal
1905bd8deadSopenharmony_ci      width and height.
1915bd8deadSopenharmony_ci
1925bd8deadSopenharmony_ci      Some consideration was given to enforcing the "squarness"
1935bd8deadSopenharmony_ci      constraint as a texture consistency constraint.  This is
1945bd8deadSopenharmony_ci      confusing however since the squareness is known up-front
1955bd8deadSopenharmony_ci      at texture image specification time so it seems confusing
1965bd8deadSopenharmony_ci      to silently report the usage error as a texture consistency
1975bd8deadSopenharmony_ci      issue.
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ci      Texture consistency still says that all the level 0 textures
2005bd8deadSopenharmony_ci      of all six faces must have the same square size.
2015bd8deadSopenharmony_ci
2025bd8deadSopenharmony_ci    If some combination of 1D, 2D, 3D, and cube map texturing is
2035bd8deadSopenharmony_ci    enabled, which really operates?
2045bd8deadSopenharmony_ci
2055bd8deadSopenharmony_ci      RESOLUTION:  Cube map texturing.  In OpenGL 1.2, 3D takes
2065bd8deadSopenharmony_ci      priority over 2D takes priority over 1D.  Cube mapping should
2075bd8deadSopenharmony_ci      take priority over all conventional n-dimensional texturing
2085bd8deadSopenharmony_ci      schemes.
2095bd8deadSopenharmony_ci
2105bd8deadSopenharmony_ci    Does anything need to be said about combining cube mapping with
2115bd8deadSopenharmony_ci    multitexture?
2125bd8deadSopenharmony_ci
2135bd8deadSopenharmony_ci      RESOLUTION:  NO.  Cube mapping should be available on either
2145bd8deadSopenharmony_ci      texture unit in the proposed hardware.  The proposed hardware is
2155bd8deadSopenharmony_ci      fully orthogonal in its handling of cube map textures.
2165bd8deadSopenharmony_ci
2175bd8deadSopenharmony_ci    Does it make sense to support borders for cube map textures.
2185bd8deadSopenharmony_ci
2195bd8deadSopenharmony_ci      Actually, it does, but that still doesn't mean that the proposed
2205bd8deadSopenharmony_ci      hardware is going to support texture borders -- let alone texture
2215bd8deadSopenharmony_ci      borders for cube map textures.  It would be nice if the texture
2225bd8deadSopenharmony_ci      border pixels match the appropriate texels from the edges of the
2235bd8deadSopenharmony_ci      other cube map faces that they junction with.  For this reason,
2245bd8deadSopenharmony_ci      we'll leave the texture border capability implicitly supported.
2255bd8deadSopenharmony_ci
2265bd8deadSopenharmony_ci    How does mipmap level-of-detail selection work for cube map
2275bd8deadSopenharmony_ci    textures?
2285bd8deadSopenharmony_ci
2295bd8deadSopenharmony_ci      The spec should document the "ideal" level-of-detail selection even
2305bd8deadSopenharmony_ci      if the proposed hardware cuts corners in this area.  The existing
2315bd8deadSopenharmony_ci      spec's language about LOD selection is fine.
2325bd8deadSopenharmony_ci
2335bd8deadSopenharmony_ci      For the proposed hardware, it approximates the LOD across the cube
2345bd8deadSopenharmony_ci      map seam, but everywhere else it is as accurate as regular texture
2355bd8deadSopenharmony_ci      maps.
2365bd8deadSopenharmony_ci
2375bd8deadSopenharmony_ci    Should the implementation dependent value for the maximum
2385bd8deadSopenharmony_ci    texture size for a cube map be the same as MAX_TEXTURE_SIZE?
2395bd8deadSopenharmony_ci
2405bd8deadSopenharmony_ci      RESOLUTION: NO.  OpenGL 1.2 has a different MAX_3D_TEXTURE_SIZE
2415bd8deadSopenharmony_ci      for 3D textures, and cube maps should take six times more space
2425bd8deadSopenharmony_ci      than a 2D texture map of the same width & height.  The implementation
2435bd8deadSopenharmony_ci      dependent MAX_CUBE_MAP_TEXTURE_SIZE_EXT constant should be used for
2445bd8deadSopenharmony_ci      cube maps then.
2455bd8deadSopenharmony_ci
2465bd8deadSopenharmony_ci      Note that the proxy cube map texture provides a better way to
2475bd8deadSopenharmony_ci      find out the maximum cube map texture size supported since the
2485bd8deadSopenharmony_ci      proxy mechanism can take into account the internal format, etc.
2495bd8deadSopenharmony_ci
2505bd8deadSopenharmony_ciNew Procedures and Functions
2515bd8deadSopenharmony_ci
2525bd8deadSopenharmony_ci    None
2535bd8deadSopenharmony_ci
2545bd8deadSopenharmony_ciNew Tokens
2555bd8deadSopenharmony_ci
2565bd8deadSopenharmony_ci    Accepted by the <param> parameters of TexGend, TexGenf, and TexGeni
2575bd8deadSopenharmony_ci    when <pname> parameter is TEXTURE_GEN_MODE:
2585bd8deadSopenharmony_ci
2595bd8deadSopenharmony_ci        NORMAL_MAP_EXT                      0x8511
2605bd8deadSopenharmony_ci        REFLECTION_MAP_EXT                  0x8512
2615bd8deadSopenharmony_ci
2625bd8deadSopenharmony_ci    When the <pname> parameter of TexGendv, TexGenfv, and TexGeniv is
2635bd8deadSopenharmony_ci    TEXTURE_GEN_MODE, then the array <params> may also contain
2645bd8deadSopenharmony_ci    NORMAL_MAP_EXT or REFLECTION_MAP_EXT.
2655bd8deadSopenharmony_ci
2665bd8deadSopenharmony_ci    Accepted by the <cap> parameter of Enable, Disable, IsEnabled, and
2675bd8deadSopenharmony_ci    by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
2685bd8deadSopenharmony_ci    and GetDoublev, and by the <target> parameter of BindTexture,
2695bd8deadSopenharmony_ci    GetTexParameterfv, GetTexParameteriv, TexParameterf, TexParameteri,
2705bd8deadSopenharmony_ci    TexParameterfv, and TexParameteriv:
2715bd8deadSopenharmony_ci
2725bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_EXT                0x8513
2735bd8deadSopenharmony_ci
2745bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
2755bd8deadSopenharmony_ci    GetFloatv, and GetDoublev:
2765bd8deadSopenharmony_ci
2775bd8deadSopenharmony_ci        TEXTURE_BINDING_CUBE_MAP_EXT        0x8514
2785bd8deadSopenharmony_ci
2795bd8deadSopenharmony_ci    Accepted by the <target> parameter of GetTexImage,
2805bd8deadSopenharmony_ci    GetTexLevelParameteriv, GetTexLevelParameterfv, TexImage2D,
2815bd8deadSopenharmony_ci    CopyTexImage2D, TexSubImage2D, and CopySubTexImage2D:
2825bd8deadSopenharmony_ci
2835bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_POSITIVE_X_EXT     0x8515
2845bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_NEGATIVE_X_EXT     0x8516
2855bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_POSITIVE_Y_EXT     0x8517
2865bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT     0x8518
2875bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_POSITIVE_Z_EXT     0x8519
2885bd8deadSopenharmony_ci        TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT     0x851a
2895bd8deadSopenharmony_ci
2905bd8deadSopenharmony_ci    Accepted by the <target> parameter of GetTexLevelParameteriv,
2915bd8deadSopenharmony_ci    GetTexLevelParameterfv, GetTexParameteriv, and TexImage2D:
2925bd8deadSopenharmony_ci
2935bd8deadSopenharmony_ci        PROXY_TEXTURE_CUBE_MAP_EXT          0x851b 
2945bd8deadSopenharmony_ci
2955bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetBooleanv, GetDoublev,
2965bd8deadSopenharmony_ci    GetIntegerv, and GetFloatv:
2975bd8deadSopenharmony_ci
2985bd8deadSopenharmony_ci        MAX_CUBE_MAP_TEXTURE_SIZE_EXT       0x851c
2995bd8deadSopenharmony_ci
3005bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.2 Specification (OpenGL Operation)
3015bd8deadSopenharmony_ci
3025bd8deadSopenharmony_ci --  Section 2.10.4 "Generating Texture Coordinates"
3035bd8deadSopenharmony_ci
3045bd8deadSopenharmony_ci      Change the last sentence in the 1st paragraph to:
3055bd8deadSopenharmony_ci
3065bd8deadSopenharmony_ci      "If <pname> is TEXTURE_GEN_MODE, then either <params> points to or <param> is
3075bd8deadSopenharmony_ci      an integer that is one of the symbolic constants OBJECT_LINEAR,
3085bd8deadSopenharmony_ci      EYE_LINEAR, SPHERE_MAP, REFLECTION_MAP_EXT, or NORMAL_MAP_EXT."
3095bd8deadSopenharmony_ci
3105bd8deadSopenharmony_ci      Add these paragraphs after the 4th paragraph:
3115bd8deadSopenharmony_ci
3125bd8deadSopenharmony_ci      "If TEXTURE_GEN_MODE indicates REFLECTION_MAP_EXT, compute the reflection
3135bd8deadSopenharmony_ci      vector r as described for the SPHERE_MAP mode.  Then the value assigned
3145bd8deadSopenharmony_ci      to an s coordinate (the first TexGen argument value is S) is s = rx; the
3155bd8deadSopenharmony_ci      value assigned to a t coordinate is t = ry; and the value assigned to a r
3165bd8deadSopenharmony_ci      coordinate is r = rz.  Calling TexGen with a <coord> of Q when <pname>
3175bd8deadSopenharmony_ci      indicates REFLECTION_MAP_EXT generates the error INVALID_ENUM.
3185bd8deadSopenharmony_ci
3195bd8deadSopenharmony_ci      If TEXTURE_GEN_MODE indicates NORMAL_MAP_EXT, compute the normal
3205bd8deadSopenharmony_ci      vector n' as described in section 2.10.3.  Then the value assigned to an
3215bd8deadSopenharmony_ci      s coordinate (the first TexGen argument value is S) is s = nx'; the value
3225bd8deadSopenharmony_ci      assigned to a t coordinate is t = ny'; and the value assigned to a r coordinate
3235bd8deadSopenharmony_ci      is r = nz'.  Calling TexGen with a <coord> of Q when <pname> indicates
3245bd8deadSopenharmony_ci      REFLECTION_MAP_EXT generates the error INVALID_ENUM.
3255bd8deadSopenharmony_ci
3265bd8deadSopenharmony_ci      The last paragraph's first sentence should be changed to:
3275bd8deadSopenharmony_ci
3285bd8deadSopenharmony_ci      "The state required for texture coordinate generation comprises a
3295bd8deadSopenharmony_ci      five-valued integer for each coordinate indicating coordinate
3305bd8deadSopenharmony_ci      generation mode, ..."
3315bd8deadSopenharmony_ci
3325bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.2 Specification (Rasterization)
3335bd8deadSopenharmony_ci
3345bd8deadSopenharmony_ci --  Section 3.6.5 "Pixel Transfer Operations" under "Convolution"
3355bd8deadSopenharmony_ci
3365bd8deadSopenharmony_ci     Change this paragraph to say:
3375bd8deadSopenharmony_ci
3385bd8deadSopenharmony_ci     ... "If CONVOLUTION_2D is enabled, the two-dimensional convolution
3395bd8deadSopenharmony_ci     filter is applied only to the two-dimensional images passed to
3405bd8deadSopenharmony_ci     DrawPixels, CopyPixels, ReadPixels, TexImage2D, TexSubImage2D,
3415bd8deadSopenharmony_ci     CopyTexImage2D, CopyTexSubImage2D, and CopyTexSubImage3D, and
3425bd8deadSopenharmony_ci     returned by GetTexImage with one of the targets TEXTURE_2D,
3435bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_POSITIVE_X_EXT, TEXTURE_CUBE_MAP_NEGATIVE_X_EXT,
3445bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_POSITIVE_Y_EXT, TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT,
3455bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_POSITIVE_Z_EXT, or TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT."
3465bd8deadSopenharmony_ci
3475bd8deadSopenharmony_ci --  Section 3.8.1 "Texture Image Specification"
3485bd8deadSopenharmony_ci
3495bd8deadSopenharmony_ci     Change the first full sentence on page 117 to:
3505bd8deadSopenharmony_ci
3515bd8deadSopenharmony_ci     "<target> must be one of TEXTURE_2D for a 2D texture, or one of
3525bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_POSITIVE_X_EXT, TEXTURE_CUBE_MAP_NEGATIVE_X_EXT,
3535bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_POSITIVE_Y_EXT, TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT,
3545bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_POSITIVE_Z_EXT, or TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT
3555bd8deadSopenharmony_ci     for a cube map texture.  Additionally, <target> can be either
3565bd8deadSopenharmony_ci     PROXY_TEXTURE_2D for a 2D proxy texture or PROXY_TEXTURE_CUBE_MAP_EXT
3575bd8deadSopenharmony_ci     for a cube map proxy texture as discussed in section 3.8.7."
3585bd8deadSopenharmony_ci
3595bd8deadSopenharmony_ci     Add the following paragraphs after the first paragraph on page 117:
3605bd8deadSopenharmony_ci
3615bd8deadSopenharmony_ci     "A 2D texture consists of a single 2D texture image.  A cube
3625bd8deadSopenharmony_ci     map texture is a set of six 2D texture images.  The six cube map
3635bd8deadSopenharmony_ci     texture targets form a single cube map texture though each target
3645bd8deadSopenharmony_ci     names a distinct face of the cube map.  The TEXTURE_CUBE_MAP_*_EXT
3655bd8deadSopenharmony_ci     targets listed above update their appropriate cube map face 2D
3665bd8deadSopenharmony_ci     texture image.  Note that the six cube map 2D image tokens such as
3675bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_POSITIVE_X_EXT are used when specifying, updating,
3685bd8deadSopenharmony_ci     or querying, one of a cube map's six 2D image, but when enabling
3695bd8deadSopenharmony_ci     cube map texturing or binding to a cube map texture object (that is
3705bd8deadSopenharmony_ci     when the cube map is accessed as a whole as opposed to a particular
3715bd8deadSopenharmony_ci     2D image), the TEXTURE_CUBE_MAP_EXT token is specified.
3725bd8deadSopenharmony_ci
3735bd8deadSopenharmony_ci     When the target parameter to TexImage2D is one of the six cube map
3745bd8deadSopenharmony_ci     2D image targets, the error INVALID_VALUE is generated if the width
3755bd8deadSopenharmony_ci     and height parameters are not equal.
3765bd8deadSopenharmony_ci
3775bd8deadSopenharmony_ci     If cube map texturing is enabled at the time a primitive is
3785bd8deadSopenharmony_ci     rasterized and if the set of six targets are not "cube complete",
3795bd8deadSopenharmony_ci     then it is as if texture mapping were disabled.  The targets of
3805bd8deadSopenharmony_ci     a cube map texture are "cube complete" if the array 0 of all six
3815bd8deadSopenharmony_ci     targets have identical and square dimensions, the array 0 of all
3825bd8deadSopenharmony_ci     six targets were specified with the same symbolic constant, and
3835bd8deadSopenharmony_ci     the array 0 of all six targets have the same border width."
3845bd8deadSopenharmony_ci
3855bd8deadSopenharmony_ci     After the 14th paragraph add:
3865bd8deadSopenharmony_ci
3875bd8deadSopenharmony_ci     "In a similiar fashion, the maximum allowable width and height
3885bd8deadSopenharmony_ci     (they must be the same) of a cube map texture must be at least
3895bd8deadSopenharmony_ci     2^(k-lod)+2bt for image arrays level 0 through k, where k is the
3905bd8deadSopenharmony_ci     log base 2 of MAX_CUBE_MAP_TEXTURE_EXT."
3915bd8deadSopenharmony_ci
3925bd8deadSopenharmony_ci --  Section 3.8.2 "Alternate Texture Image Specification Commands"
3935bd8deadSopenharmony_ci
3945bd8deadSopenharmony_ci     Update the second paragraph (page 120) to say:
3955bd8deadSopenharmony_ci
3965bd8deadSopenharmony_ci     ... "Currently, <target> must be
3975bd8deadSopenharmony_ci     TEXTURE_2D, TEXTURE_CUBE_MAP_POSITIVE_X_EXT,
3985bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_NEGATIVE_X_EXT, TEXTURE_CUBE_MAP_POSITIVE_Y_EXT,
3995bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT, TEXTURE_CUBE_MAP_POSITIVE_Z_EXT,
4005bd8deadSopenharmony_ci     or TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT." ...
4015bd8deadSopenharmony_ci
4025bd8deadSopenharmony_ci     Add after the second paragraph (page 120), the following:
4035bd8deadSopenharmony_ci
4045bd8deadSopenharmony_ci     "When the target parameter to CopyTexImage2D is one of the six cube
4055bd8deadSopenharmony_ci     map 2D image targets, the error INVALID_VALUE is generated if the
4065bd8deadSopenharmony_ci     width and height parameters are not equal."
4075bd8deadSopenharmony_ci
4085bd8deadSopenharmony_ci     Update the fourth paragraph (page 121) to say:
4095bd8deadSopenharmony_ci
4105bd8deadSopenharmony_ci     ... "Currently the target arguments of TexSubImage1D and
4115bd8deadSopenharmony_ci     CopyTexSubImage1D must be TEXTURE_1D, the <target> arguments of
4125bd8deadSopenharmony_ci     TexSubImage2D and CopyTexSubImage2D must be one of TEXTURE_2D,
4135bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_POSITIVE_X_EXT, TEXTURE_CUBE_MAP_NEGATIVE_X_EXT,
4145bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_POSITIVE_Y_EXT, TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT,
4155bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_POSITIVE_Z_EXT, or TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT,
4165bd8deadSopenharmony_ci     and the <target> arguments of TexSubImage3D and CopyTexSubImage3D
4175bd8deadSopenharmony_ci     must be TEXTURE_3D." ...
4185bd8deadSopenharmony_ci
4195bd8deadSopenharmony_ci --  Section 3.8.3 "Texture Parameters"
4205bd8deadSopenharmony_ci
4215bd8deadSopenharmony_ci     Change paragraph one (page 124) to say:
4225bd8deadSopenharmony_ci
4235bd8deadSopenharmony_ci     ... "<target> is the target, either TEXTURE_1D,
4245bd8deadSopenharmony_ci     TEXTURE_2D, TEXTURE_3D, or TEXTURE_CUBE_MAP_EXT." ...
4255bd8deadSopenharmony_ci
4265bd8deadSopenharmony_ci     Add a final paragraph saying:
4275bd8deadSopenharmony_ci
4285bd8deadSopenharmony_ci     "Texture parameters for a cube map texture apply to cube map
4295bd8deadSopenharmony_ci     as a whole; the six distinct 2D texture images use the
4305bd8deadSopenharmony_ci     texture parameters of the cube map itself.
4315bd8deadSopenharmony_ci
4325bd8deadSopenharmony_ci --  Section 3.8.5 "Texture Minification" under "Mipmapping"
4335bd8deadSopenharmony_ci
4345bd8deadSopenharmony_ci     Change the first full paragraph on page 130 to:
4355bd8deadSopenharmony_ci
4365bd8deadSopenharmony_ci     ... "If texturing is enabled for one-, two-, or three-dimensional
4375bd8deadSopenharmony_ci     texturing but not cube map texturing (and TEXTURE_MIN_FILTER
4385bd8deadSopenharmony_ci     is one that requires a mipmap) at the time a primitive is
4395bd8deadSopenharmony_ci     rasterized and if the set of arrays TEXTURE_BASE_LEVEL through q =
4405bd8deadSopenharmony_ci     min{p,TEXTURE_MAX_LEVEL} is incomplete, based on the dimensions of
4415bd8deadSopenharmony_ci     array 0, then it is as if texture mapping were disabled."
4425bd8deadSopenharmony_ci
4435bd8deadSopenharmony_ci     Follow the first full paragraph on page 130 with:
4445bd8deadSopenharmony_ci
4455bd8deadSopenharmony_ci     "If cube map texturing is enabled and TEXTURE_MIN_FILTER is one that
4465bd8deadSopenharmony_ci     requires mipmap levels at the time a primitive is rasterized and
4475bd8deadSopenharmony_ci     if the set of six targets are not "mipmap cube complete", then it
4485bd8deadSopenharmony_ci     is as if texture mapping were disabled.  The targets of a cube map
4495bd8deadSopenharmony_ci     texture are "mipmap cube complete" if the six cube map targets are
4505bd8deadSopenharmony_ci     "cube complete" and the set of arrays TEXTURE_BASE_LEVEL through
4515bd8deadSopenharmony_ci     q are not incomplete (as described above)."
4525bd8deadSopenharmony_ci
4535bd8deadSopenharmony_ci --  Section 3.8.7 "Texture State and Proxy State"
4545bd8deadSopenharmony_ci
4555bd8deadSopenharmony_ci     Change the first sentence of the first paragraph (page 131) to say:
4565bd8deadSopenharmony_ci
4575bd8deadSopenharmony_ci     "The state necessary for texture can be divided into two categories.
4585bd8deadSopenharmony_ci     First, there are the nine sets of mipmap arrays (three for the one-,
4595bd8deadSopenharmony_ci     two-, and three-dimensional texture targets and six for the cube
4605bd8deadSopenharmony_ci     map texture targets) and their number." ...
4615bd8deadSopenharmony_ci
4625bd8deadSopenharmony_ci     Change the second paragraph (page 132) to say:
4635bd8deadSopenharmony_ci
4645bd8deadSopenharmony_ci     "In addition to the one-, two-, three-dimensional, and the six cube
4655bd8deadSopenharmony_ci     map sets of image arrays, the partially instantiated one-, two-,
4665bd8deadSopenharmony_ci     and three-dimensional and one cube map sets of proxy image arrays
4675bd8deadSopenharmony_ci     are maintained." ...
4685bd8deadSopenharmony_ci
4695bd8deadSopenharmony_ci     After the third paragraph (page 132) add:
4705bd8deadSopenharmony_ci
4715bd8deadSopenharmony_ci     "The cube map proxy arrays are operated on in the same manner
4725bd8deadSopenharmony_ci     when TexImage2D is executed with the <target> field specified as
4735bd8deadSopenharmony_ci     PROXY_TEXTURE_CUBE_MAP_EXT with the addition that determining that a
4745bd8deadSopenharmony_ci     given cube map texture is supported with PROXY_TEXTURE_CUBE_MAP_EXT
4755bd8deadSopenharmony_ci     indicates that all six of the cube map 2D images are supported.
4765bd8deadSopenharmony_ci     Likewise, if the specified PROXY_TEXTURE_CUBE_MAP_EXT is not
4775bd8deadSopenharmony_ci     supported, none of the six cube map 2D images are supported."
4785bd8deadSopenharmony_ci
4795bd8deadSopenharmony_ci     Change the second sentence of the fourth paragraph (page 132) to:
4805bd8deadSopenharmony_ci
4815bd8deadSopenharmony_ci     "Therefore PROXY_TEXTURE_1D, PROXY_TEXTURE_2D, PROXY_TEXTURE_3D,
4825bd8deadSopenharmony_ci     and PROXY_TEXTURE_CUBE_MAP_EXT cannot be used as textures, and their
4835bd8deadSopenharmony_ci     images must never be queried using GetTexImage." ...
4845bd8deadSopenharmony_ci 
4855bd8deadSopenharmony_ci --  Section 3.8.8 "Texture Objects"
4865bd8deadSopenharmony_ci
4875bd8deadSopenharmony_ci     Change the first sentence of paragraph one (page 133) to say:
4885bd8deadSopenharmony_ci
4895bd8deadSopenharmony_ci     "In addition to the default textures TEXTURE_1D, TEXTURE_2D,
4905bd8deadSopenharmony_ci     TEXTURE_3D, and TEXTURE_CUBE_MAP_EXT, named one-, two-,
4915bd8deadSopenharmony_ci     and three-dimensional texture objects and cube map texture objects
4925bd8deadSopenharmony_ci     can be created and operated on." ...
4935bd8deadSopenharmony_ci
4945bd8deadSopenharmony_ci     Change the second paragraph (page 133) to say:
4955bd8deadSopenharmony_ci
4965bd8deadSopenharmony_ci     "A texture object is created by binding an unused name to
4975bd8deadSopenharmony_ci     TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, or TEXTURE_CUBE_MAP_EXT." ...
4985bd8deadSopenharmony_ci     "If the new texture object is bound to TEXTURE_1D, TEXTURE_2D,
4995bd8deadSopenharmony_ci     TEXTURE_3D, or TEXTURE_CUBE_MAP_EXT, it remains a one-, two-,
5005bd8deadSopenharmony_ci     three-dimensional, or cube map texture until it is deleted."
5015bd8deadSopenharmony_ci
5025bd8deadSopenharmony_ci     Change the third paragraph (page 133) to say:
5035bd8deadSopenharmony_ci
5045bd8deadSopenharmony_ci     "BindTexture may also be used to bind an existing texture object to
5055bd8deadSopenharmony_ci     either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, or TEXTURE_CUBE_MAP_EXT."
5065bd8deadSopenharmony_ci
5075bd8deadSopenharmony_ci     Change paragraph five (page 133) to say:
5085bd8deadSopenharmony_ci
5095bd8deadSopenharmony_ci     "In the initial state, TEXTURE_1D, TEXTURE_2D, TEXTURE_3D,
5105bd8deadSopenharmony_ci     and TEXTURE_CUBE_MAP have one-dimensional, two-dimensional,
5115bd8deadSopenharmony_ci     three-dimensional, and cube map state vectors associated
5125bd8deadSopenharmony_ci     with them respectively."  ...  "The initial, one-dimensional,
5135bd8deadSopenharmony_ci     two-dimensional, three-dimensional, and cube map texture is therefore
5145bd8deadSopenharmony_ci     operated upon, queried, and applied as TEXTURE_1D, TEXTUER_2D,
5155bd8deadSopenharmony_ci     TEXTURE_3D, and TEXTURE_CUBE_MAP_EXT respectively while 0 is bound
5165bd8deadSopenharmony_ci     to the corresponding targets."
5175bd8deadSopenharmony_ci
5185bd8deadSopenharmony_ci     Change paragraph six (page 134) to say:
5195bd8deadSopenharmony_ci
5205bd8deadSopenharmony_ci     ... "If a texture that is currently bound to one of the targets
5215bd8deadSopenharmony_ci     TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, or TEXTURE_CUBE_MAP_EXT is
5225bd8deadSopenharmony_ci     deleted, it is as though BindTexture has been executed with the
5235bd8deadSopenharmony_ci     same <target> and <texture> zero." ...
5245bd8deadSopenharmony_ci
5255bd8deadSopenharmony_ci --  Section 3.8.10 "Texture Application"
5265bd8deadSopenharmony_ci
5275bd8deadSopenharmony_ci     Replace the beginning sentences of the first paragraph (page 136)
5285bd8deadSopenharmony_ci     with:
5295bd8deadSopenharmony_ci
5305bd8deadSopenharmony_ci     "Texturing is enabled or disabled using the generic Enable
5315bd8deadSopenharmony_ci     and Disable commands, respectively, with the symbolic constants
5325bd8deadSopenharmony_ci     TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, or TEXTURE_CUBE_MAP_EXT to enable
5335bd8deadSopenharmony_ci     the one-dimensional, two-dimensional, three-dimensional, or cube
5345bd8deadSopenharmony_ci     map texturing respectively.  If both two- and one-dimensional
5355bd8deadSopenharmony_ci     textures are enabled, the two-dimensional texture is used.  If the
5365bd8deadSopenharmony_ci     three-dimensional and either of the two- or one-dimensional textures
5375bd8deadSopenharmony_ci     is enabled, the three-dimensional texture is used.  If the cube map
5385bd8deadSopenharmony_ci     texture and any of the three-, two-, or one-dimensional textures is
5395bd8deadSopenharmony_ci     enabled, then cube map texturing is used.  If texturing is disabled,
5405bd8deadSopenharmony_ci     a rasterized fragment is passed on unaltered to the next stage of the
5415bd8deadSopenharmony_ci     GL (although its texture coordinates may be discarded).  Otherwise,
5425bd8deadSopenharmony_ci     a texture value is found according to the parameter values of the
5435bd8deadSopenharmony_ci     currently bound texture image of the appropriate dimensionality.
5445bd8deadSopenharmony_ci
5455bd8deadSopenharmony_ci     However, when cube map texturing is enabled, the rules are
5465bd8deadSopenharmony_ci     more complicated.  For cube map texturing, the (s,t,r) texture
5475bd8deadSopenharmony_ci     coordinates are treated as a direction vector (rx,ry,rz) emanating
5485bd8deadSopenharmony_ci     from the center of a cube.  (The q coordinate can be ignored since
5495bd8deadSopenharmony_ci     it merely scales the vector without affecting the direction.) At
5505bd8deadSopenharmony_ci     texture application time, the interpolated per-fragment (s,t,r)
5515bd8deadSopenharmony_ci     selects one of the cube map face's 2D image based on the largest
5525bd8deadSopenharmony_ci     magnitude coordinate direction (the major axis direction).
5535bd8deadSopenharmony_ci     The target column in the table below explains how the major axis
5545bd8deadSopenharmony_ci     direction maps to the 2D image of a particular cube map target.
5555bd8deadSopenharmony_ci
5565bd8deadSopenharmony_ci      major axis
5575bd8deadSopenharmony_ci      direction     target                             sc     tc    ma
5585bd8deadSopenharmony_ci      ----------    -------------------------------    ---    ---   ---
5595bd8deadSopenharmony_ci       +rx          TEXTURE_CUBE_MAP_POSITIVE_X_EXT    -rz    -ry   rx
5605bd8deadSopenharmony_ci       -rx          TEXTURE_CUBE_MAP_NEGATIVE_X_EXT    +rz    -ry   rx
5615bd8deadSopenharmony_ci       +ry          TEXTURE_CUBE_MAP_POSITIVE_Y_EXT    +rx    +rz   ry
5625bd8deadSopenharmony_ci       -ry          TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT    +rx    -rz   ry
5635bd8deadSopenharmony_ci       +rz          TEXTURE_CUBE_MAP_POSITIVE_Z_EXT    +rx    -ry   rz
5645bd8deadSopenharmony_ci       -rz          TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT    -rx    -ry   rz
5655bd8deadSopenharmony_ci
5665bd8deadSopenharmony_ci     Using the sc, tc, and ma determined by the major axis direction as
5675bd8deadSopenharmony_ci     specified in the table above, an updated (s,t) is calculated as
5685bd8deadSopenharmony_ci     follows
5695bd8deadSopenharmony_ci
5705bd8deadSopenharmony_ci        s   =   ( sc/|ma| + 1 ) / 2
5715bd8deadSopenharmony_ci        t   =   ( tc/|ma| + 1 ) / 2
5725bd8deadSopenharmony_ci
5735bd8deadSopenharmony_ci     If |ma| is zero or very nearly zero, the results of the above two
5745bd8deadSopenharmony_ci     equations need not be defined (though the result may not lead to
5755bd8deadSopenharmony_ci     GL interruption or termination).
5765bd8deadSopenharmony_ci
5775bd8deadSopenharmony_ci     This new (s,t) is used to find a texture value in the determined
5785bd8deadSopenharmony_ci     face's 2D texture image using the rules given in sections 3.8.5
5795bd8deadSopenharmony_ci     and 3.8.6." ...
5805bd8deadSopenharmony_ci
5815bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations
5825bd8deadSopenharmony_ciand the Frame Buffer)
5835bd8deadSopenharmony_ci
5845bd8deadSopenharmony_ci     None
5855bd8deadSopenharmony_ci
5865bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.2 Specification (Special Functions)
5875bd8deadSopenharmony_ci
5885bd8deadSopenharmony_ci --  Section 5.4 "Display Lists"
5895bd8deadSopenharmony_ci
5905bd8deadSopenharmony_ci     In the second to the last paragraph (page 179), add
5915bd8deadSopenharmony_ci     PROXY_TEXTURE_CUBE_MAP_EXT to the list of PROXY_* tokens.
5925bd8deadSopenharmony_ci
5935bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.2 Specification (State and State Requests)
5945bd8deadSopenharmony_ci
5955bd8deadSopenharmony_ci --  Section 6.1.3 "Enumerated Queries"
5965bd8deadSopenharmony_ci
5975bd8deadSopenharmony_ci     Change the fourth paragraph (page 183) to say:
5985bd8deadSopenharmony_ci
5995bd8deadSopenharmony_ci     "The GetTexParameter and GetTexLevelParameter parameter
6005bd8deadSopenharmony_ci     <target> may be one of TEXTURE_1D, TEXTURE_2D, TEXTURE_3D,
6015bd8deadSopenharmony_ci     or TEXTURE_CUBE_MAP_EXT, indicating the currently bound
6025bd8deadSopenharmony_ci     one-dimensional, two-dimensional, three-dimensional, or cube map
6035bd8deadSopenharmony_ci     texture object.  For GetTexLevelParameter, <target> may be one of
6045bd8deadSopenharmony_ci     TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP_POSITIVE_X_EXT,
6055bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_NEGATIVE_X_EXT, TEXTURE_CUBE_MAP_POSITIVE_Y_EXT,
6065bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT, TEXTURE_CUBE_MAP_POSITIVE_Z_EXT,
6075bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT, PROXY_TEXTURE_1D, PROXY_TEXTURE_2D,
6085bd8deadSopenharmony_ci     PROXY_TEXTURE_3D, or PROXY_TEXTURE_CUBE_MAP, indicating the
6095bd8deadSopenharmony_ci     one-dimensional, two-dimensional, three-dimensional texture
6105bd8deadSopenharmony_ci     object, or distinct cube map texture 2D image, or one-dimensional,
6115bd8deadSopenharmony_ci     two-dimensional, three-dimensional, or cube map proxy state vector.
6125bd8deadSopenharmony_ci     Note that TEXTURE_CUBE_MAP_EXT is not a valid <target> parameter for
6135bd8deadSopenharmony_ci     GetTexLevelParameter because it does not specify a particular cube
6145bd8deadSopenharmony_ci     map face."
6155bd8deadSopenharmony_ci
6165bd8deadSopenharmony_ci --  Section 6.1.4 "Texture Queries"
6175bd8deadSopenharmony_ci
6185bd8deadSopenharmony_ci     Change the first paragraph to read:
6195bd8deadSopenharmony_ci
6205bd8deadSopenharmony_ci     ... "It is somewhat different from the other get commands; <tex>
6215bd8deadSopenharmony_ci     is a symbolic value indicating which texture (or texture face in the
6225bd8deadSopenharmony_ci     case of a cube map texture target name) is to be obtained.
6235bd8deadSopenharmony_ci     TEXTURE_1D indicates a one-dimensional texture, TEXTURE_2D
6245bd8deadSopenharmony_ci     indicates a two-dimensional texture, TEXTURE_3D indicates a
6255bd8deadSopenharmony_ci     three-dimensional texture, and TEXTURE_CUBE_MAP_POSITIVE_X_EXT,
6265bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_NEGATIVE_X_EXT, TEXTURE_CUBE_MAP_POSITIVE_Y_EXT,
6275bd8deadSopenharmony_ci     TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT, TEXTURE_CUBE_MAP_POSITIVE_Z_EXT,
6285bd8deadSopenharmony_ci     and TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT indicate the respective face of
6295bd8deadSopenharmony_ci     a cube map texture.
6305bd8deadSopenharmony_ci
6315bd8deadSopenharmony_ciAdditions to the GLX Specification
6325bd8deadSopenharmony_ci
6335bd8deadSopenharmony_ci     None
6345bd8deadSopenharmony_ci
6355bd8deadSopenharmony_ciErrors
6365bd8deadSopenharmony_ci
6375bd8deadSopenharmony_ci     INVALID_ENUM is generated when TexGen is called with a <coord> of Q
6385bd8deadSopenharmony_ci     when <pname> indicates REFLECTION_MAP_EXT or NORMAL_MAP_EXT.
6395bd8deadSopenharmony_ci
6405bd8deadSopenharmony_ciNew State
6415bd8deadSopenharmony_ci
6425bd8deadSopenharmony_ci(table 6.12, p202) add the following entries:
6435bd8deadSopenharmony_ci
6445bd8deadSopenharmony_ciGet Value                        Type    Get Command   Initial Value   Description           Sec    Attribute
6455bd8deadSopenharmony_ci---------                        ----    -----------   -------------   -----------           ------ --------------
6465bd8deadSopenharmony_ciTEXTURE_CUBE_MAP_EXT             B       IsEnabled     False           True if cube map      3.8.10 texture/enable
6475bd8deadSopenharmony_ci                                                                       texturing is enabled
6485bd8deadSopenharmony_ciTEXTURE_BINDING_CUBE_MAP_EXT     Z+      GetIntegerv   0               Texture object        3.8.8  texture
6495bd8deadSopenharmony_ci                                                                       for TEXTURE_CUBE_MAP
6505bd8deadSopenharmony_ciTEXTURE_CUBE_MAP_POSITIVE_X_EXT  nxI     GetTexImage   see 3.8         positive x face       3.8    -
6515bd8deadSopenharmony_ci                                                                       cube map texture
6525bd8deadSopenharmony_ci                                                                       image at lod i
6535bd8deadSopenharmony_ciTEXTURE_CUBE_MAP_NEGATIVE_X_EXT  nxI     GetTexImage   see 3.8         negative x face       3.8    -
6545bd8deadSopenharmony_ci                                                                       cube map texture
6555bd8deadSopenharmony_ci                                                                       image at lod i
6565bd8deadSopenharmony_ciTEXTURE_CUBE_MAP_POSITIVE_Y_EXT  nxI     GetTexImage   see 3.8         positive y face       3.8    -
6575bd8deadSopenharmony_ci                                                                       cube map texture
6585bd8deadSopenharmony_ci                                                                       image at lod i
6595bd8deadSopenharmony_ciTEXTURE_CUBE_MAP_NEGATIVE_Y_EXT  nxI     GetTexImage   see 3.8         negative y face       3.8    -
6605bd8deadSopenharmony_ci                                                                       cube map texture
6615bd8deadSopenharmony_ci                                                                       image at lod i
6625bd8deadSopenharmony_ciTEXTURE_CUBE_MAP_POSITIVE_Z_EXT  nxI     GetTexImage   see 3.8         positive z face       3.8    -
6635bd8deadSopenharmony_ci                                                                       cube map texture
6645bd8deadSopenharmony_ci                                                                       image at lod i
6655bd8deadSopenharmony_ciTEXTURE_CUBE_MAP_NEGATIVE_Z_EXT  nxI     GetTexImage   see 3.8         negative z face       3.8    -
6665bd8deadSopenharmony_ci                                                                       cube map texture
6675bd8deadSopenharmony_ci                                                                       image at lod i
6685bd8deadSopenharmony_ci
6695bd8deadSopenharmony_ci(table 6.14, p204) change the entry for TEXTURE_GEN_MODE to:
6705bd8deadSopenharmony_ci
6715bd8deadSopenharmony_ciGet Value            Type    Get Command     Initial Value   Description        Sec    Attribute
6725bd8deadSopenharmony_ci---------            ----    -----------     -------------   -----------        ------ ---------
6735bd8deadSopenharmony_ciTEXTURE_GEN_MODE     4xZ5    GetTexGeniv     EYE_LINEAR      Function used for  2.10.4 texture
6745bd8deadSopenharmony_ci                                                             texgen (for s,t,r,
6755bd8deadSopenharmony_ci                                                             and q)
6765bd8deadSopenharmony_ci
6775bd8deadSopenharmony_ci(the type changes from 4xZ3 to 4xZ5)
6785bd8deadSopenharmony_ci
6795bd8deadSopenharmony_ciNew Implementation Dependent State
6805bd8deadSopenharmony_ci
6815bd8deadSopenharmony_ci(table 6.24, p214) add the following entry:
6825bd8deadSopenharmony_ci
6835bd8deadSopenharmony_ciGet Value                       Type    Get Command   Minimum Value   Description           Sec    Attribute
6845bd8deadSopenharmony_ci---------                       ----    -----------   -------------   -----------           ------ --------------
6855bd8deadSopenharmony_ciMAX_CUBE_MAP_TEXTURE_SIZE_EXT   Z+      GetIntegerv   16              Maximum cube map      3.8.1  -
6865bd8deadSopenharmony_ci                                                                      texture image
6875bd8deadSopenharmony_ci                                                                      dimension
688