Overview of changes to the OpenGL 1.2 specification between the February, 1998 and March, 1998 drafts (plus changes to earlier drafts). Changes marked with *** may need ARB signoff, as they represent functional differences from the previous spec rather than errors. Section Comments ------- -------- General Parts of the specification dealing with the imaging subset, defined in section 3.6.2 and including portions of sections 2.10.2, 3.6.3, 3.6.5, 4.1.6, and 6.1.6 through 6.1.10 inclusive, are now typeset in gray as a visible indicator. Due to LaTeX limitations, a few of the tables specific to the imaging subset are not in gray (just their captions). Similarly, chapter 6 state table entries that are required only by the imaging subset are typeset in black against a gray background as a visible indicator. 2.10.2 "Matrices" The matrix mode for the color matrix is named COLOR, not COLOR_MATRIX. COLOR is in gray, since it's part of the imaging subset. 3.6.3 All subsections relating to the imaging subset are in gray. "Color Matrix Specification" The matrix mode for the color matrix is named COLOR, not COLOR_MATRIX. "Convolution Filter Specification" Removed footnote 1 and use language consistent with "Color Table Specification" for referring to constructing the internal format. Removed footnote 2; this refers to internal addressing of the filter, not the host image format. Removed the clause about separate filters replacing the current separable filters, as well as footnote 3 - this is a quality of implementation issue. "Minmax Table Specification" Removed footnote 4. Sized internal formats don't have to be obeyed, and presumably a floating-point type will not respect a size request that's too small, so there's no real reason to to allow sized internal formats as well as base. Removed footnote 5. While a glossary would be helpful, we've done OK without one. 3.6.4 "Conversion to Fragments" Specify that the histogram and minmax tables are not affected if the raster position is invalid, but are affected by groups which are later discarded by the pixel ownership or scissor tests. Figure 3.7 "Operation of DrawPixels" Added "final conversion" label at the last step, to make the connection to the text more obvious. 3.6.5 "Convolution" Added GetTexImage to 1D, 2D, and 2D separable operations. Added CopyTexSubImage3D to 2D and 2D separable operations, because it is intrinsically a two-dimensional operation. Behavior depends on the dimensionality of the source image. 3.6.5 "Minmax" Removed footnote 9. We may eventually want to define internal component formats larger than 16 bits. Documented that the minimum range of a minmax value is at least the minimum range of a floating-point color component (2^10), since they are also colors. 3.8.1 "Texture Image Specification" Removed footnote 11, since TexImage2D and TexImage1D descriptions mention that texture width and height may be affected by convolution. Added discussion of MAX_3D_TEXTURE_SIZE and how it differs from MAX_TEXTURE_SIZE. 3.8.2 "Alternate Texture Image Specification Commands" Expanded footnote 16 to clarify *why* there's no CopyTexSubImage3D command. 3.8.5 "Scale Factor and Level of Detail" Removed the redundant definition of initial values of TEXTURE_{MIN,MAX}_LOD (also defined in 3.8.7). 3.8.5 "Mipmapping" Removed the redundant definition of initial values of TEXTURE_{BASE,MAX}_LEVEL (also defined in 3.8.7). 3.8.7 "Texture State and Proxy State" Indicate that the texture resident flag is set by the GL, may only be queried by applications, and has an initial value determined by the GL. Removed extraneous period after INVALID_ENUM. Figure 4.2 "Operation of ReadPixels" Changed "convert to [0,1]" to "convert to float", since no clamping is done at this stage. Figure 4.3 "Operation of CopyPixels" Changed "convert to [0,1]" to "convert to float", since no clamping is done at this stage. Added "final conversion" step, to make the connection to the text and to DrawPixels operation more obvious. 5.1 "Evaluators" Added a ',' after 'sometimes yields normals of length zero". 5.6 "Hints" Specified that the initial value of all hints is DONT_CARE. 6.1.12 "Saving And Restoring State" Added a description of the 'M' and 'm' values used in the minmax table entry for its initial values. State Tables Added MAX_3D_TEXTURE_SIZE. D.1 "Three-Dimensional Texturing" Capitalized "three" in first sentence. D.6 "Texture Coordinate Edge Clamping" Remove qualification about NEAREST and LINEAR filters, since those are the only filters available in OpenGL 1.2. ---------------------------------------------------------------------------- END OF CHANGES TO THE FEBRUARY, 1998 DRAFT ---------------------------------------------------------------------------- Overview of changes to the OpenGL 1.2 specification between the January, 1998 and February, 1998 drafts. Changes marked with *** may need ARB signoff, as they represent functional differences from the previous spec rather than errors. Section Comments ------- -------- 2.6 "Begin/End Paradigm" Added current edge flag to vertex state; added current material properties to pre-lighting vertex state. Figure 2.2 Added material properties and edge flag to vertex state. Figure 2.7 Added current material properties to lighting input. Removed redundant path from transformation to lighting. Valid bit is fed from vertex clip, not transformation. Figure 2.8 Now has only the color index path from the old figure 2.8. Figure 2.9 Only the RGBA path from the old figure 2.8. Indicates primary/secondary vertex colors with a bold dashed line. Changed range of signed integers from [-2^k-1,2^k-1] to [-2^k,2^k-1]. Figure 2.10 (previously figure 2.9) Added "except that face must be BACK or FRONT_AND_BACK" to caption describing treatment of back material properties. 2.10.4 "Generating Texture Coordinates" Changed the equation for the reflection vector r to T r = u - 2 n' ( n' u ) since n' is a row vector (normal). Parenthesis added because it's more efficient to calculate in the specified order. 2.13.1 "Lighting Computation" Changed definition of c_sec in SINGLE_COLOR mode from (0,0,0) to (0,0,0,0) since the secondary color is now RGBA. Changed "c_sec has no alpha component" to "the alpha component of c_sec is 0". 2.13.6 "Clamping or Masking" Specified that colors are clamped componentwise. 2.13.9 "Final Color Processing" The A component of processed colors is required to be at least two bits, no matter the depth of the framebuffer. This ensures visuals with 1 bit of destination alpha can pass the alpha test portion of conformance. 3.4.1 "Basic Line Segment Rasterization" Now refers to interpolating in clip space instead of eye space (these are equivalent as far as linearity of interpolation goes, but there may have been vertices introduced by clipping). 3.5.2 "Stippling" Now reads "...form a stipple pattern of zeroes and ones" instead of "...are bitwise ANDed with 1 to obtain a stipple pattern of zeroes and ones". Table 3.3 Changed initial value of I_TO_I table to 0.0 (float) instead of 0 (integer). 3.6.3 "Color Table Specification" *** Added DEPTH_COMPONENT format and BITMAP type to the disallowed parameter values for ColorTable and ConvolutionFilter, since they require RGBA components as input. 3.6.3 "Convolution Filter Specification" CopyConvolutionFilter will remain in the spec (we had discussed its apparent lack of utility, but there are image processing algorithms using it on SGI implementations). 3.6.5 "Color Index Lookup" I_TO_I lookup first rounds the index before masking, in the same fashion as I_TO_{R,G,B,A} lookup. 3.6.5 "Stencil Index Lookup" S_TO_S lookup is rewritten to indicate that the index and the table entries that replace the index are integer, not floating-point. 3.6.5 "Histogram" and "Minmax" *** When sinking pixels after histogram or minmax, texture object state is still modified. Figure 3.7 Changed "convert to [0,1]" to "convert to float" 3.7 "Bitmaps" Now reads "...form a stipple pattern of zeroes and ones" instead of "...are bitwise ANDed with 1 to obtain a stipple pattern of zeroes and ones". 3.8.4 "Texture Wrap Modes" Removed reference to non-standard filters. 3.8.5 "Scale Factor and Level of Detail" Discussion of initial values of TEXTURE_{MIN,MAX}_LOD now reads "so they do not clamp the normal range of lambda" instead of "so they do not interfere with the normal operation of texture mapping". 3.8.5 "Mipmapping" Discussion of initial values of TEXTURE_{BASE,MAX}_LEVEL now reads "so they do not restrict the selection of mipmap arrays" instead of "so they do not interfere with the normal operation of texture mapping". 3.8.7 "Texture State and Proxy State" Added TEXTURE_{MIN,MAX}_LOD, TEXTURE_{BASE,MAX}_LEVEL, and TEXTURE_RESIDENT to texture state. *** Added internal format to the list of zeroed proxy texture parameters. 3.8.8 "Texture Objects" Added zero to the list of invalid values passed to AreTexturesResident. Rewrote PrioritizeTextures so that the "default textures" are identified with texture object zero. 3.10 "Fog" Rewrote language for specifying and masking FOG_INDEX. *** The spec now says that FOG_INDEX is not masked when specified, following Andy Vesper's argument. However, the sample GL appears to mask, so we need to determine whether the spec or the SI yields. 4.2.4 "The Accumulation Buffer" Restored (earlier in the section) language describing how the scissor test is applied to all Accum operations. Figure 4.2 Added "final conversion" label beside RGBA and index clamping/masking paths (may still need some changes). 6.1.3 "Enumerated Queries" GetTexParameter doesn't accept PROXY_TEXTURE_xD targets. 6.1.9 "Histogram Query" *** GetHistogram now resets all components of the histogram, whether queried or not. 6.1.10 "Minmax Query" *** GetMinmax now resets all components of the minmax table, whether queried or not. Table 6.8 FOG_INDEX has type color index (CI), not image (I) Table 6.18 COLOR_TABLE_SCALE and COLOR_TABLE_BIAS are part of pixel state. Table 6.24 SUBPIXEL_BITS applies to screen xw, yw coordinates only. ---------------------------------------------------------------------------- END OF CHANGES TO THE JANUARY, 1998 DRAFT ---------------------------------------------------------------------------- Overview of changes to the OpenGL 1.2 specification between the November, 1997 and January, 1998 drafts. Section Comments ------- -------- Throughout Changed "1-dimensional" to "one-dimensional" throughout for consistency, likewise for 2-dimensional and 3-dimensional. Made the internal format of tables, filters, and images an "integer" instead of a "42-valued" integer. 1.1 Added email address for comments and description of change bars for first and second drafts (pg. 1). 2.6 Primary and secondary colors are both RGBA now (p. 12). Added current edge flag to vertex state (p. 13). 2.8 Changed wording of DrawRangeElements behavior when indices are outside the indicated [start,end] range (p. 25). 2.10.2 Clarified forward references for TEXTURE and COLOR_MATRIX (p. 31). 2.10.3 Completely rewritten by Bill Armstrong of E&S (p. 34). 2.13 Secondary color when lighting is disabled is now (0,0,0,0), not (0,0,0) (p. 42). Figure 2.8 still needs to be split into separate RGBA and index diagrams, as mentioned by the footnote (p. 42). 2.13.1 Changed "floating point elements" to "floating point values" to avoid overloading "elements" more than we have to (p. 45). 2.13.7 Clarified by adding "the same" before "primary and secondary colors" (p. 54). 3 Added "Color Sum" stage to figure 3.1 (p. 58). 3.6 Added forward reference for DrawPixels (p. 75). 3.6.2 Add description of behavior when calling imaging subset commands when the subset is not supported (p. 77). 3.6.3 Fixed several typos, mentioned that STENCIL_INDEX and DEPTH_COMPONENT are not valid formats for tables and filters, and added a forward reference to teximage specification (p. 80, p. 83). Added initial value of color table scale & bias parameters (p. 82). Added description of state required for convolution filters (p. 86). 3.6.4 Changed "elements" to "components" in description of packed pixel formats, since they're always RGBA. No change bars are indicated here (pp. 93-98). Removed "n" from equation 3.10; n is always 1 for bitmaps (p. 98). 3.6.5 Added mathematical description of new convolution border modes - these need to be checked carefully (pp. 104-107). Added description of state required for convolution (p. 108). 3.8.1 Reworked description of host memory image layout (still may move to a section independent of texturing, since this affects many of the imaging calls as well). Mention that STENCIL_INDEX and DEPTH_COMPONENT are not valid formats for textures (pp. 113-117). 3.8.2 Added TexSubImage3D and CopyTexSubImage3D, which were mistakenly left out of the first draft (pp. 121-124) 3.8.4 Rephrase description of min and max clamping for wrap modes (p. 126). 3.8.5 Fixed typos where 3D texcoords and wrap modes were shown as the corresponding 2D parameters (p. 129). Added 3D and Copy commands to the list of those initially defining a texture (p. 131). 3.9 Rewrote Color Sum description, since both primary and secondary colors are RGBA now (p. 139). 4.1.6 Rewrote Blending description to clarify that the blending equations effectively operate in a [0,1] floating point representation, not in a fixed point representation, and to describe which parts of blending are only available when the imaging subset is provided (pp. 147-150). 4.2.4 Clean up language to match glClear and specify that scissoring is also applied to accumulation (p. 156). 4.3.2 Corrected error in Final Conversion description so that clamping is not applied only to FLOAT components (p. 161). 6 Added an overview of the sections in chapter 6 (p. 182). 6.1.3 Changed name of the section (p. 183). Added TEXTURE_DEPTH (p. 184). 6.1.4 Merged queries of 3D texture images into the section (p. 185). 6.2.1 New subsection listing state only needed when the imaging subset is supported. To be completed (p. 193). State Tables Corrected a few of the new state entries to be enables, reorganized a bit to fit tables on the page (pp. 194-218). A.3 Changed the position-invariance description to hold true on all implementations. This still may not be clear, although the X-specific language was removed (p. 222).