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