Kurt Akeley List of potential OpenGL extensions $Id: //depot/main/doc/registry/extensions/future#11 $ * Consider supporting color conversion in both the pixel and geometry paths. This requires a color mode for TexGen and a pre-texture lookup (rather than a lookup in the pixel path). It might also be possible to use the color matrix in both the pixel and geometry paths. 1. Replace undefined pixel color components with specified values as part of the "Final Expansion to RGBA" operation. Allows alpha- only images to pick up a useful color. 2. Attached video texture. Automatic double buffering with swap linked to buffer swap. Video locked to buffer swap also. 5. Support non power-of-two texture dimensions for single-level (non mipmapped), clamped texture images? (Is this really necessary?) If we do this, then eliminate the "null" texture definition stuff. 8. Support automatic generation of mipmap images. Control with mode "attached" to a named texture. Generate only down to the low-LOD level. Features that have since been implemented: 3. Perform integer decimation during pixel unpack/pack. Separate values for x, y, and z decimation. Done: decimation. 4. Support LUMINANCE and LUMINANCE_ALPHA framebuffer formats. Use GLX to do all the work - only change to OpenGL is to define what the framebuffer returns for green and blue when there are no bits (alpha already defined). Done: fbconfig. 6. Allow additional named textures to be created, manipulated, and bound. Done: texture_object. 7. Allow specification of lowest and highest mipmap level. Attach this mode to named textures. Also support separate bias of LOD-in-x and LOD-in-y computation. (GL_LODX_OFFSET and GL_LODY_OFFSET are suggested by rad.) Done: texture_lod. 9. Add a new texture clamp mode that really clamps to the border color (nearest, linear, or cubic filtering). Check with Kona folks to be sure that this is all that is necessary. Done: texture_border_clamp and texture_edge_clamp. 10. Define image buffers - drawing surfaces associated with a rendering context that are not displayable. Done: pbuffer. 11. Add info about transparency to the level stuff in GLX (what color, if any, is transparent in that level). Done: visual_info. 12. Define a mechanism that renormalizes normals cheaply when all scales are uniform. Done: rescale_normal. 13. Define support for multiple active textures. Done: multitexture. 14. Introduce new tokens to support packed pixel data types. For example, GL_PACKED_INT, GL_PACKED_SHORT, and GL_PACKED_BYTE. Then define the formats that result when these new types are used in conjunction with currently- defined formats. For example, format GL_RGB with type GL_PACKED_INT might be xxbbbbbbbbbbggggggggggrrrrrrrrrr Done: packed_pixels. 15. Add argb format to support photoshop, etc. Done (BGRA combined with _REV packed pixel formats in OpenGL 1.2). 16. Add input color mux to pixel path. Allows red to be sourced by red, green, blue, alpha, zero, or one. Likewise green, blue, and alpha. Could also use this mechanism to throw away a fifth component from a CMYKA image! This would elminiate the need for RGBAx and xxxxA image formats. Done: color_matrix. 17. Support high-resolution pixmaps (lots of bits of color) even if only low-resolution visuals are supported by the framebuffer. Done: fbconfig 18. Variable display resolution (on the fly) Done: video_resize. 19. Light points (automatic shading based on range, even field intensity, etc.) Done: point_parameters. 20. Textured stamps. (Like trees.) Done: sprite.