15bd8deadSopenharmony_ciXXX - Incomplete 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ciName 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ci EXT_multiple_textures 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ciName Strings 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ci GL_EXT_multiple_textures 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ciNumber 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ci ??? 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ciBasic approach: 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciInitially I started out adding enumerants and functions everywhere to 185bd8deadSopenharmony_ciadd the concept of multiple current textures to the OpenGL API. This 195bd8deadSopenharmony_ciquickly became unwieldy because the number of functions affected is very 205bd8deadSopenharmony_cilarge and the number of enumerants needed for texture control, queries, 215bd8deadSopenharmony_citexgen, evaluators, vertex arrays, etc. soared into the hundreds. 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ciRather than try to change a fundamental assumption of the API, I decided 245bd8deadSopenharmony_cito keep the notion of a current texture but add a function to allow 255bd8deadSopenharmony_cisetting that current texture to any of a number of textures kept current 265bd8deadSopenharmony_ciin the implementation. The API changes are thus much smaller. The 275bd8deadSopenharmony_ciinternal changes are still substantial but smaller than in the previous 285bd8deadSopenharmony_ciapproach because of the lack of new parameters to verify and new 295bd8deadSopenharmony_cifunctions to implement. 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ciNew enumerants: 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ciGL_MAX_CURRENT_TEXTURES 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ciSpecifies the maximum number of textures which may simultaneously be 365bd8deadSopenharmony_cicurrent. This number must be at least two and can be no more than 375bd8deadSopenharmony_cisixteen. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciGL_CURRENT_TEXTURE_INDEX 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ciRetrieves the index of the current texture. 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ciGL_SUB 445bd8deadSopenharmony_ciGL_COMBINE_COLOR 455bd8deadSopenharmony_ciGL_TWICE_COMBINE_COLOR 465bd8deadSopenharmony_ciGL_TEX_COLOR 475bd8deadSopenharmony_ciGL_TWICE_TEX_COLOR 485bd8deadSopenharmony_ciGL_ONE_MINUS_COMBINE_COLOR 495bd8deadSopenharmony_ciGL_ONE_MINUS_TEX_COLOR 505bd8deadSopenharmony_ciGL_COMBINE_ALPHA 515bd8deadSopenharmony_ciGL_TWICE_COMBINE_ALPHA 525bd8deadSopenharmony_ciGL_COMBINE_ALPHA_REPLACES_COLOR 535bd8deadSopenharmony_ciGL_TEX_ALPHA 545bd8deadSopenharmony_ciGL_TWICE_TEX_ALPHA 555bd8deadSopenharmony_ciGL_TEX_ALPHA_REPLACES_COLOR 565bd8deadSopenharmony_ciGL_ONE_MINUS_COMBINE_ALPHA 575bd8deadSopenharmony_ciGL_ONE_MINUS_TEX_ALPHA 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ciAdd operations allowed for texturing combining. 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ciGL_TEXCOMBINE_CLAMP 625bd8deadSopenharmony_ci 635bd8deadSopenharmony_ciSpecifies whether intermediate results should be clamped during texture 645bd8deadSopenharmony_cicombining. This may result in higher or lower performance depending on 655bd8deadSopenharmony_cithe implementation. An application can check whether clamping is 665bd8deadSopenharmony_cidesirable or not by querying the following enumerant. 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ciGL_TEXCOMBINE_NATURAL_CLAMP 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ciIndicates whether the implementation prefers texcombine clamping or not. 715bd8deadSopenharmony_ciQuerying this enumerant returns GL_TRUE, GL_FALSE or GL_DONTCARE, 725bd8deadSopenharmony_ciindicating that the implementation prefers clamping, does not prefer 735bd8deadSopenharmony_ciclamping or is unaffected by the clamping setting. 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ciThe following enumerants are numbered consecutively from the 0 entry to 765bd8deadSopenharmony_cithe 15 entry, where n is replaced by the number of the particular 775bd8deadSopenharmony_ciinstance. This restricts the possible set of current textures to 785bd8deadSopenharmony_cisixteen simultaneously active textures. 795bd8deadSopenharmony_ci 805bd8deadSopenharmony_ciGL_TEXCOORDn_BIT 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ciUsed to indicate the texture coordinate to affect. The legal range for 835bd8deadSopenharmony_cin for a particular implementation is from 0 to 845bd8deadSopenharmony_ciGL_MAX_CURRENT_TEXTURES-1. 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ciGL_TEXCOMBINE_COMBINE_COLORn 875bd8deadSopenharmony_ciGL_TEXCOMBINE_COLOR_OPn 885bd8deadSopenharmony_ciGL_TEXCOMBINE_TEX_COLORn 895bd8deadSopenharmony_ciGL_TEXCOMBINE_COMBINE_ALPHAn 905bd8deadSopenharmony_ciGL_TEXCOMBINE_ALPHA_OPn 915bd8deadSopenharmony_ciGL_TEXCOMBINE_TEX_ALPHAn 925bd8deadSopenharmony_ci 935bd8deadSopenharmony_ciUsed to query the current settings for texture combine functions. The 945bd8deadSopenharmony_cilegal range for n for a particular implementation is 0 to 955bd8deadSopenharmony_ciGL_MAX_CURRENT_TEXTURES-2. 965bd8deadSopenharmony_ci 975bd8deadSopenharmony_ciNew functions: 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_civoid glCurrentTextureIndex(GLuint index); 1005bd8deadSopenharmony_ci 1015bd8deadSopenharmony_ciSets the current texture index. index must range from 0 to 1025bd8deadSopenharmony_ciGL_MAX_CURRENT_TEXTURES-1 or GL_INVALID_VALUE is generated. The current 1035bd8deadSopenharmony_citexture index is used for every OpenGL API which references texture 1045bd8deadSopenharmony_cistate without explicitly specifying a texture index. 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ciThe default index is zero. The current index can be retrieved with 1075bd8deadSopenharmony_ciglGet for GL_CURRENT_TEXTURE_INDEX. 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_civoid glMultiTexCoord{1234}{sifd}{v}(GLbitfield mask, T coords); 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ciSets the texture coordinate for all textures with a corresponding bit 1125bd8deadSopenharmony_ciset in the given mask. mask is a bitfield made up of any combination of 1135bd8deadSopenharmony_cibits taken from the GL_TEXCOORDn_BIT values. Other parameters are as for 1145bd8deadSopenharmony_ciglTexCoord. glMultiTexCoord(n, ...) can be replaced by the code 1155bd8deadSopenharmony_cisequence 1165bd8deadSopenharmony_ci glCurrentTextureIndex(n); 1175bd8deadSopenharmony_ci glTexCoord(...); 1185bd8deadSopenharmony_cifor each bit n set in the mask. It is included for performance and 1195bd8deadSopenharmony_ciprogramming convenience. 1205bd8deadSopenharmony_ci 1215bd8deadSopenharmony_ciThere is no corresponding function for retrieval as queries are not 1225bd8deadSopenharmony_ciexpected to be common enough to warrant a special query enumerant. To 1235bd8deadSopenharmony_ciquery the n'th texture coordinate, set the texture index to n and do a 1245bd8deadSopenharmony_ciglGet for GL_CURRENT_TEXTURE_COORDS. 1255bd8deadSopenharmony_ci 1265bd8deadSopenharmony_civoid glBindNthTexture(GLuint index, GLenum target, GLuint texture); 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ciBind the given texture object to the n'th slot for the given target. 1295bd8deadSopenharmony_ciOperates exactly as glBindTexture except for directly acting on the 1305bd8deadSopenharmony_ciindexed texture instead of the current texture index. The current 1315bd8deadSopenharmony_citexture index is not changed. 1325bd8deadSopenharmony_ci 1335bd8deadSopenharmony_civoid glNthTexCombineFunc(GLuint index, GLenum combineColorFactor, GLenum 1345bd8deadSopenharmony_cicolorOp, GLenum texColorFactor, GLenum combineAlphaFactor, GLenum 1355bd8deadSopenharmony_cialphaOp, GLenum texAlphaFactor); 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ciglNthTexCombineFunc is used to control how all of the currently enabled 1385bd8deadSopenharmony_citextures are combined together before being combined with the fragment. 1395bd8deadSopenharmony_ciThe n'th combine function controls how texture values at index n and n+1 1405bd8deadSopenharmony_ciare combined, so there are m-1 combine functions for m enabled textures. 1415bd8deadSopenharmony_ciindex selects the function to be set while combineColorFactor, colorOp, 1425bd8deadSopenharmony_citexColorFactor, combineAlphaFactor, alphaOp and texAlphaFactor control 1435bd8deadSopenharmony_cihow texture values are combined to produce the resulting texture value. 1445bd8deadSopenharmony_ci 1455bd8deadSopenharmony_ciWhen a fragment is being textured all current textures contribute to a 1465bd8deadSopenharmony_cifinal texture value which is combined with the fragment through the 1475bd8deadSopenharmony_cinormal texture environment function. This texture value is initialized 1485bd8deadSopenharmony_cifrom the first enabled texture and then modified by following enabled 1495bd8deadSopenharmony_citextures using the texture combine functions. 1505bd8deadSopenharmony_ci 1515bd8deadSopenharmony_ciIn the following equation: 1525bd8deadSopenharmony_ci Tc is the current combined texture color. 1535bd8deadSopenharmony_ci Ta is the current combined texture alpha. 1545bd8deadSopenharmony_ci texColor(n) is the n'th texture's color. 1555bd8deadSopenharmony_ci texAlpha(n) is the n'th texture's alpha. If the texture has no 1565bd8deadSopenharmony_cialpha the value is one. 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci n = 0 1595bd8deadSopenharmony_ci Tc = texColor(0), Ta = texAlpha(0). 1605bd8deadSopenharmony_ci 1615bd8deadSopenharmony_ci n > 0 1625bd8deadSopenharmony_ci Tc = (Tc * combineColorFactor) colorOp 1635bd8deadSopenharmony_ci(texColor(n) * texColorFactor). 1645bd8deadSopenharmony_ci Ta = (Ta * combineAlphaFactor) alphaOp 1655bd8deadSopenharmony_ci(texAlpha(n) * texAlphaFactor). 1665bd8deadSopenharmony_ci 1675bd8deadSopenharmony_cicombineColorFactor and texColorFactor are one of GL_ZERO, GL_ONE, 1685bd8deadSopenharmony_ciGL_COMBINE_COLOR, GL_TWICE_COMBINE_COLOR, GL_TEX_COLOR, 1695bd8deadSopenharmony_ciGL_TWICE_TEX_COLOR, GL_COMBINE_ALPHA, GL_TWICE_COMBINE_ALPHA, 1705bd8deadSopenharmony_ciGL_COMBINE_ALPHA_REPLACES_COLOR, GL_TEX_ALPHA, GL_TWICE_TEX_ALPHA, 1715bd8deadSopenharmony_ciGL_TEX_ALPHA_REPLACES_COLOR, GL_ONE_MINUS_COMBINE_COLOR, 1725bd8deadSopenharmony_ciGL_ONE_MINUS_TEX_COLOR, GL_ONE_MINUS_COMBINE_ALPHA and 1735bd8deadSopenharmony_ciGL_ONE_MINUS_TEX_ALPHA. Most of these factors are self-explanatory. 1745bd8deadSopenharmony_ciThe ALPHA_REPLACES_COLOR enumerants replicate the requested alpha and 1755bd8deadSopenharmony_cireplace the color rather than doing a multiply. This allows the alpha 1765bd8deadSopenharmony_cichannel to contain a monochrome color for specular highlights or other 1775bd8deadSopenharmony_cieffects. 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_cicombineAlphaFactor and texAlphaFactor are one of GL_ZERO, GL_ONE, 1805bd8deadSopenharmony_ciGL_COMBINE_ALPHA, GL_TWICE_COMBINE_ALPHA, GL_TEX_ALPHA, 1815bd8deadSopenharmony_ciGL_TWICE_TEX_ALPHA, GL_ONE_MINUS_COMBINE_ALPHA and 1825bd8deadSopenharmony_ciGL_ONE_MINUS_TEX_ALPHA. 1835bd8deadSopenharmony_ci 1845bd8deadSopenharmony_cicolorOp and alphaOp are one of GL_ADD or GL_SUB. 1855bd8deadSopenharmony_ci 1865bd8deadSopenharmony_ciIf GL_TEXCOMBINE_CLAMP is enabled then the results produced at each 1875bd8deadSopenharmony_cistage are clamped to the range (0.0, 1.0). If it isn't enabled, results 1885bd8deadSopenharmony_ciare only clamped after the final computation. Since results are always 1895bd8deadSopenharmony_ciclamped after the final texcombine stage, GL_TEXCOMBINE_CLAMP only has 1905bd8deadSopenharmony_cian effect if more than two textures are enabled. 1915bd8deadSopenharmony_ci 1925bd8deadSopenharmony_ciTexture combine functions can be set for any index regardless of the 1935bd8deadSopenharmony_citexture enable state. The functions may not be used but it is legal to 1945bd8deadSopenharmony_ciset them. Texture values are treated in a generic way during texture 1955bd8deadSopenharmony_cicombining so there are no inherent restrictions on the formats of the 1965bd8deadSopenharmony_citextures in the current texture vector. Implementations are encouraged 1975bd8deadSopenharmony_cito support arbitrary mixtures of texture size, format and 1985bd8deadSopenharmony_cidimensionality. Applications can determine if an implementation cannot 1995bd8deadSopenharmony_cisupport a particular mix of textures through the proxy mechanism. 2005bd8deadSopenharmony_ci 2015bd8deadSopenharmony_ciThe default functions are (GL_ONE, GL_ADD, GL_ONE, GL_ONE, GL_ADD, 2025bd8deadSopenharmony_ciGL_ONE). 2035bd8deadSopenharmony_ci 2045bd8deadSopenharmony_ciNew capabilities for existing functions: 2055bd8deadSopenharmony_ci 2065bd8deadSopenharmony_ciglGet{*}v 2075bd8deadSopenharmony_ci 2085bd8deadSopenharmony_ciGL_MAX_CURRENT_TEXTURES and GL_CURRENT_TEXTURE_INDEX can be retrieved 2095bd8deadSopenharmony_cithrough glGet. The enable state of GL_TEXCOMBINE_CLAMP can be retrieved 2105bd8deadSopenharmony_ciwith glGet. GL_TEXCOMBINE_NATURAL_CLAMP's setting can be retrieved with 2115bd8deadSopenharmony_ciglGet. 2125bd8deadSopenharmony_ci 2135bd8deadSopenharmony_ciThe current texture combine functions can be retrieved through glGet 2145bd8deadSopenharmony_ciusing the GL_TEXCOMBINE_COMBINE_COLORn, GL_TEXCOMBINE_COLOR_OPn, 2155bd8deadSopenharmony_ciGL_TEXCOMBINE_TEX_COLORn, GL_TEXCOMBINE_COMBINE_ALPHAn, 2165bd8deadSopenharmony_ciGL_TEXCOMBINE_ALPHA_OPn and GL_TECOMBINE_TEX_ALPHAn enumerants. 2175bd8deadSopenharmony_ci 2185bd8deadSopenharmony_ciglEnable, glDisable, glIsEnabled 2195bd8deadSopenharmony_ci 2205bd8deadSopenharmony_ciGL_TEXCOMBINE_CLAMP can be enabled, disabled and checked using the 2215bd8deadSopenharmony_cistandard enable functions. 2225bd8deadSopenharmony_ci 2235bd8deadSopenharmony_ciImpact of texture index on existing functions: 2245bd8deadSopenharmony_ci 2255bd8deadSopenharmony_ciglMatrixMode 2265bd8deadSopenharmony_ci 2275bd8deadSopenharmony_ciEach texture coordinate has its own texture matrix so N texture matrices 2285bd8deadSopenharmony_cimust be kept instead of one. 2295bd8deadSopenharmony_ci 2305bd8deadSopenharmony_ciglEnable 2315bd8deadSopenharmony_ciglDisable 2325bd8deadSopenharmony_ciglIsEnabled 2335bd8deadSopenharmony_ciglGet{*}v 2345bd8deadSopenharmony_ci 2355bd8deadSopenharmony_ciAll of the textures supported by an implementation can be enabled and 2365bd8deadSopenharmony_cidisabled using the GL_TEXTURE_1D and GL_TEXTURE_2D enumerants. As with 2375bd8deadSopenharmony_cisingle texture implementations, if both textures for a particular n are 2385bd8deadSopenharmony_cienabled then the 2D texture takes precedence. Enabling texture n 2395bd8deadSopenharmony_cienables all textures between zero and n. Disabling texture n disables 2405bd8deadSopenharmony_ciall textures from n to GL_MAX_CURRENT_TEXTURES-1. This behavior allows 2415bd8deadSopenharmony_ciquick enabling and disabling of multiple textures while preventing 2425bd8deadSopenharmony_cisparse enable states. 2435bd8deadSopenharmony_ci 2445bd8deadSopenharmony_ciEach enabled texture must be consistent according to the OpenGL rules or 2455bd8deadSopenharmony_ciit is as if texturing is disabled. 2465bd8deadSopenharmony_ci 2475bd8deadSopenharmony_ciglTexImage{12}D 2485bd8deadSopenharmony_ciglCopyTexImage{12}D 2495bd8deadSopenharmony_ciglTexSubImage{12}D 2505bd8deadSopenharmony_ciglCopyTexSubImage{12}D 2515bd8deadSopenharmony_ciglTexParam{if}{v} 2525bd8deadSopenharmony_ciglBindTexture 2535bd8deadSopenharmony_ciglGetTexGen{if}v 2545bd8deadSopenharmony_ciglGetTexParameter{if}v 2555bd8deadSopenharmony_ciglGetTexLevelParameter{if}v 2565bd8deadSopenharmony_ciglGetTexImage 2575bd8deadSopenharmony_ci 2585bd8deadSopenharmony_ciAll of the texture control functions must now cope with N times as many 2595bd8deadSopenharmony_citextures. 2605bd8deadSopenharmony_ci 2615bd8deadSopenharmony_ciProxies become even more important with multiple texture support as some 2625bd8deadSopenharmony_ciimplementations may have restrictions on what kinds of textures can be 2635bd8deadSopenharmony_ciused simultaneously. The proxy mechanism can be used to determine if a 2645bd8deadSopenharmony_ciparticular mix of textures is supported or not. 2655bd8deadSopenharmony_ci 2665bd8deadSopenharmony_ciglPushAttrib 2675bd8deadSopenharmony_ciglPopAttrib 2685bd8deadSopenharmony_ci 2695bd8deadSopenharmony_ciAll current texture state is pushed and popped. 2705bd8deadSopenharmony_ci 2715bd8deadSopenharmony_ciglMatrixMode 2725bd8deadSopenharmony_ciglPushMatrix 2735bd8deadSopenharmony_ciglPopMatrix 2745bd8deadSopenharmony_ci 2755bd8deadSopenharmony_ciEach texture coordinate has its own transform and texture stack. 2765bd8deadSopenharmony_ci 2775bd8deadSopenharmony_ciTexture Coordinate Generation and Evaluators 2785bd8deadSopenharmony_ci 2795bd8deadSopenharmony_ciAutomatically generated texture coordinates affect the n'th texture 2805bd8deadSopenharmony_cicoordinate, where n is the current texture index. N times as many 2815bd8deadSopenharmony_citexture coordinate generators or texture-coordinate-affecting evaluators 2825bd8deadSopenharmony_cican now be active. It is invalid to specify evaluator targets other 2835bd8deadSopenharmony_cithan the texture coordinates for non-zero current texture indices. 2845bd8deadSopenharmony_ci 2855bd8deadSopenharmony_ciOther State Queries 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ciAll state queries for texture-related information must now return 2885bd8deadSopenharmony_ciinformation for the currently selected texture. 2895bd8deadSopenharmony_ci 2905bd8deadSopenharmony_ciChange History 2915bd8deadSopenharmony_ci 2925bd8deadSopenharmony_ci04/15/97 2935bd8deadSopenharmony_ci Changed 'left' to 'combine' and 'right' 2945bd8deadSopenharmony_cito 'tex' to try and make names more descriptive. 2955bd8deadSopenharmony_ci Changed all enumerants ending in _n to 2965bd8deadSopenharmony_cijust n to match existing style for consecutive enumerants. 2975bd8deadSopenharmony_ci Changed TEXCOORD_BIT_n to TEXCOORDn_BIT 2985bd8deadSopenharmony_cifor consistency. 2995bd8deadSopenharmony_ci 3005bd8deadSopenharmony_ci02/06/97 3015bd8deadSopenharmony_ci Changed glNthTexCoord to glMultiTexCoord 3025bd8deadSopenharmony_cito allow multiple texture coordinates to be set with a single call. It 3035bd8deadSopenharmony_ciis expected that texture coordinates will commonly be the same for 3045bd8deadSopenharmony_cimultiple textures and there is some hardware that supports texture 3055bd8deadSopenharmony_cicoordinate broadcasting so this is an important programming and 3065bd8deadSopenharmony_ciperformance issue. 3075bd8deadSopenharmony_ci 3085bd8deadSopenharmony_ci02/04/97 3095bd8deadSopenharmony_ci Added GL_TEXCOMBINE_NATURAL_CLAMP to 3105bd8deadSopenharmony_cigive applications a way to determine whether texcombine clamping should 3115bd8deadSopenharmony_cibe enabled or not for maximum performance. 3125bd8deadSopenharmony_ci 3135bd8deadSopenharmony_ci01/27/97 3145bd8deadSopenharmony_ci Added GL_*_ALPHA_REPLACES_COLOR so that 3155bd8deadSopenharmony_cialpha values can override color values when doing texture combining. 3165bd8deadSopenharmony_ci 3175bd8deadSopenharmony_ci01/21/97 3185bd8deadSopenharmony_ci Chose sixteen as the maximum number of 3195bd8deadSopenharmony_cicurrent textures possibly supported. 3205bd8deadSopenharmony_ci glBindNthTexture added. 3215bd8deadSopenharmony_ci glNthTexBlendFunc changed to 3225bd8deadSopenharmony_ciglNthTexCombineFunc. 3235bd8deadSopenharmony_ci Scaling factors split into separate 3245bd8deadSopenharmony_cicolor and alpha factors in glNthTexCombineFunc. New scaling factors 3255bd8deadSopenharmony_ciadded and all scaling factors explicitly specified. 3265bd8deadSopenharmony_ci Combine function query enumerants 3275bd8deadSopenharmony_cichanged and extended to match glNthTexCombineFunc. 3285bd8deadSopenharmony_ci GL_MULT deleted as an allowed operator 3295bd8deadSopenharmony_ciin glNthTexCombineFunc. 3305bd8deadSopenharmony_ci GL_TEXCOMBINE_CLAMP added. 3315bd8deadSopenharmony_ci Changed texture enabled/disable to be 3325bd8deadSopenharmony_cibulk operations rather than affecting a single texture. 3335bd8deadSopenharmony_ci Specified that multiple texture 3345bd8deadSopenharmony_citransforms and stacks must be kept. 3355bd8deadSopenharmony_ci Encouraged implementations to support 3365bd8deadSopenharmony_cimixing texture types in the current texture vector. 3375bd8deadSopenharmony_ci Deleted Questions section as all 3385bd8deadSopenharmony_cipreviously open issues have been closed. 3395bd8deadSopenharmony_ci 3405bd8deadSopenharmony_ci01/16/97 3415bd8deadSopenharmony_ci Initial release. 342