| XXX - not complete yet! |
| |
| Name |
| |
| SGIS_texture4D |
| |
| Name Strings |
| |
| GL_SGIS_texture4D |
| |
| Version |
| |
| $Date: 1997/03/15 02:52:10 $ $Revision: 1.25 $ |
| |
| Number |
| |
| 16 |
| |
| Dependencies |
| |
| EXT_abgr affects the definition of this extension |
| EXT_texture is required |
| EXT_texture3D is required |
| EXT_subtexture affects the definition of this extension |
| |
| Overview |
| |
| This extension defines 4-dimensional texture mapping. If EXT_subtexture |
| is supported, this extension also defines a mechanism to redefine a |
| portion of an existing 4-dimensional texture image. Because |
| EXT_texture3D is required, this extension utilizes the 3-dimensional |
| image support defined in by EXT_texture3D as a base for 4-dimensional |
| image manipulation. |
| |
| The 4th dimension has an abstract, rather than physical, reference |
| and will be called "extent", since the definition of extent is "that which |
| specifies the range or magnitude of an area or volume." |
| |
| Four-dimensional texture mapping is more constrained than its one, two, |
| and three-dimensional counterparts. Mipmapping is not supported, so |
| only the level-zero 4-dimensional texture image can be defined. Cubic |
| filtering is not supported, so the border width must be either zero or |
| one. |
| |
| Four-dimensional textures are used primarily as color lookup tables for |
| color conversion. |
| |
| New Procedures and Functions |
| |
| void TexImage4DSGIS(enum target, |
| int level, |
| enum internalformat, |
| sizei width, |
| sizei height, |
| sizei depth, |
| sizei extent, |
| int border, |
| enum format, |
| enum type, |
| const void* pixels); |
| |
| void TexSubImage4DSGIS(enum target, |
| int level, |
| int xoffset, |
| int yoffset, |
| int zoffset, |
| int woffset, |
| sizei width, |
| sizei height, |
| sizei depth, |
| sizei extent, |
| enum format, |
| enum type, |
| const void* pixels); |
| |
| New Tokens |
| |
| Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, |
| GetFloatv, and GetDoublev, and by the <pname> parameter of PixelStore: |
| |
| PACK_SKIP_VOLUMES_SGIS |
| PACK_IMAGE_DEPTH_SGIS |
| UNPACK_SKIP_VOLUMES_SGIS |
| UNPACK_IMAGE_DEPTH_SGIS |
| |
| Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by |
| the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and |
| GetDoublev, and by the <target> parameter of TexImage4DSGIS, GetTexImage, |
| GetTexLevelParameteriv, GetTexLevelParameterfv, GetTexParameteriv, and |
| GetTexParameterfv: |
| |
| TEXTURE_4D_SGIS |
| |
| Accepted by the <target> parameter of TexImage4DSGIS, |
| GetTexLevelParameteriv, and GetTexLevelParameterfv: |
| |
| PROXY_TEXTURE_4D_SGIS |
| |
| Accepted by the <pname> parameter of GetTexLevelParameteriv and |
| GetTexLevelParameterfv: |
| |
| TEXTURE_4DSIZE_SGIS |
| |
| Accepted by the <pname> parameter of TexParameteriv, TexParameterfv, |
| GetTexParameteriv, and GetTexParameterfv: |
| |
| TEXTURE_WRAP_Q_SGIS |
| |
| Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, |
| GetFloatv, and GetDoublev: |
| |
| MAX_4D_TEXTURE_SIZE_SGIS |
| TEXTURE_4D_BINDING_SGIS |
| |
| |
| |
| Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) |
| |
| None |
| |
| Additions to Chapter 3 of the 1.0 Specification (Rasterization) |
| |
| XXX - not written yet. Be sure to handle the null image case. |
| |
| Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations |
| and the Framebuffer) |
| |
| None |
| |
| Additions to Chapter 5 of the 1.0 Specification (Special Functions) |
| |
| TexImage4DSGIS with a proxy target is not included in display |
| lists, but is instead executed immediately. |
| |
| Additions to Chapter 6 of the 1.0 Specification (State and State Requests) |
| |
| 4-dimensional texture images are queried using GetTexImage with its |
| <target> parameter set to TEXTURE_4D_SGIS. The assignment of texel |
| component values to the initial R, G, B, and A components of a pixel |
| group is described in EXT_texture. Pixel transfer and pixel storage |
| operations are applied as if the image were 3-dimensional, except that |
| the additional pixel storage state values PACK_IMAGE_DEPTH_SGIS and |
| PACK_SKIP_VOLUMES_SGIS affect the storage of the image into memory. The |
| correspondence of texels to memory locations is as defined for |
| TexImage4DSGIS above, substituting PACK* state for UNPACK* state in all |
| occurrences. |
| |
| Additions to the GLX Specification |
| |
| None |
| |
| GLX Protocol |
| |
| A new GL rendering command is added. This command contains pixel data; |
| thus it is sent to the server either as part of a glXRender request |
| or as part of a glXRenderLarge request: |
| |
| TexImage4DSGIS |
| 2 84+n+p rendering command length |
| 2 2057 rendering command opcode |
| 1 BOOL swap_bytes |
| 1 BOOL lsb_first |
| 2 unused |
| 4 CARD32 row_length |
| 4 CARD32 image_height |
| 4 CARD32 image_depth |
| 4 CARD32 skip_rows |
| 4 CARD32 skip_images |
| 4 CARD32 skip_volumes |
| 4 CARD32 skip_pixels |
| 4 CARD32 alignment |
| 4 ENUM target |
| 4 INT32 level |
| 4 ENUM internalformat |
| 4 INT32 width |
| 4 INT32 height |
| 4 INT32 depth |
| 4 INT32 size4d |
| 4 INT32 border |
| 4 ENUM format |
| 4 ENUM type |
| 4 CARD32 null_image |
| n LISTofBYTE pixels |
| p unused, p=pad(n) |
| |
| If the command is encoded in a glXRenderLarge request, the command |
| opcode and command length fields above are expanded to 4 bytes each: |
| |
| 4 88+n+p rendering command length |
| 4 2057 rendering command opcode |
| |
| If <width> < 0, <height> < 0, <depth> < 0, <size4d> < 0, <format> is invalid i |
| or <type> is invalid, then the command is erroneous and n=0. |
| |
| <pixels> is arranged as a sequence of adjacent volumes. Each volume is a |
| 3-dimensional image, whose structure is determined by the image depth and the |
| parameters <image_height>, <swap_bytes>, <lsb_first>, <row_length>, <skip_rows>, |
| <skip_pixels>, <alignment>, <width>, <format>, and <type> given in the request. |
| If <image_depth> is not positive then the number of images (i.e., the image |
| depth) is <depth>; otherwise the number of images is <image_depth>. |
| |
| <skip_volumes> allows a sub-piece of the 4-dimensional image to be selected. |
| If <skip_volumes> is positive, then the pointer is advanced by <skip_volumes> |
| times the number of elements in one 3-dimensional image. Then <size4d> |
| 3-dimensional images are read, each having a subimage extracted in the |
| manner described in Appendix A of the GLX Protocol Specification. |
| |
| TexSubImage4DSGIS |
| 2 88+n+p rendering command length |
| 2 2058 rendering command opcode |
| 1 BOOL swap_bytes |
| 1 BOOL lsb_first |
| 2 unused |
| 4 CARD32 row_length |
| 4 CARD32 image_height |
| 4 CARD32 image_depth |
| 4 CARD32 skip_rows |
| 4 CARD32 skip_images |
| 4 CARD32 skip_volumes |
| 4 CARD32 skip_pixels |
| 4 CARD32 alignment |
| 4 ENUM target |
| 4 INT32 level |
| 4 INT32 xoffset |
| 4 INT32 yoffset |
| 4 INT32 zoffset |
| 4 INT32 woffset |
| 4 INT32 width |
| 4 INT32 height |
| 4 INT32 depth |
| 4 INT32 size4d |
| 4 ENUM format |
| 4 ENUM type |
| 4 CARD32 unused |
| n LISTofBYTE image |
| p unused, p=pad(n) |
| |
| If the command is encoded in a glXRenderLarge request, the command |
| opcode and command length fields above are expanded to 4 bytes each: |
| |
| 4 92+n+p rendering command length |
| 4 2058 rendering command opcode |
| |
| If <width> < 0, <height> < 0, <depth> < 0, <size4d>, <format> is invalid |
| or <type> is invalid, then the command is erroneous and n=0. |
| |
| <pixels> is arranged as a sequence of adjacent volumes. Each volume is a |
| 3-dimensional image, whose structure is determined by the image height, image |
| depth and the parameters <swap_bytes>, <lsb_first>, <row_length>, <skip_rows>, |
| <skip_pixels>, <alignment>, <width>, <format>, and <type> given in the request. |
| If <image_depth> is not positive then the number of 2Dimages (i.e., the volume |
| depth) is <depth>; otherwise the number of 2Dimages is <image_depth>. |
| |
| <skip_volumes> allows a sub-volume of the 4-dimensional image to be selected. |
| If <skip_volumes> is positive, then the pointer is advanced by <skip_volumes> |
| times the number of elements in one 3-dimensional image. Then <size4d> |
| 3-dimensional images are read, each having a subimage extracted in the |
| manner described in Appendix A of the GLX Protocol Specification. |
| |
| Dependencies on EXT_abgr |
| |
| If EXT_abgr is supported, the <format> parameter of TexImage4DSGIS |
| accepts ABGR_EXT. Otherwise it does not. |
| |
| Dependencies on EXT_texture |
| |
| EXT_texture is required. All of the <components> tokens defined by |
| EXT_texture are accepted by the <internalformat> parameter of |
| TexImage4DSGIS, with the same semantics that are defined by EXT_texture. |
| |
| The query and error extensions defined by EXT_texture are extended in |
| this document. |
| |
| Dependencies on EXT_texture3D |
| |
| EXT_texture3D is required, because the 3-dimensional image support that |
| it defines is used by this extension, and because it doesn't make sense |
| to support 4D textures if 3D textures are not supported. |
| |
| Dependencies on EXT_subtexture |
| |
| If EXT_subtexture is not supported, this extension does not define |
| TexSubImage4DSGIS. All discussion of replacing a subset of the image of |
| an existing 4-dimensional texture is void. |
| |
| Errors |
| |
| INVALID_ENUM is generated if TexImage4DSGIS parameter <target> is not |
| TEXTURE_4D_SGIS. |
| |
| INVALID_VALUE is generated if TexImage4DSGIS parameter <level> is less |
| than zero. |
| |
| INVALID_ENUM is generated if TexImage4DSGIS parameter <internalformat> is |
| not ALPHA, RGB, RGBA, LUMINANCE, LUMINANCE_ALPHA, or one of the tokens |
| defined by the EXT_texture extension. (Values 1, 2, 3, and 4 are not |
| accepted as internal formats by TexImage4DSGIS). |
| |
| INVALID_VALUE is generated if TexImage4DSGIS parameter <width>, <height>, |
| or <depth> is less than zero, or cannot be represented as |
| 2**k + 2*border for some integer k. |
| |
| INVALID_VALUE is generated if TexImage4DSGIS parameter <border> is not 0 |
| or 1. |
| |
| INVALID_ENUM is generated if TexImage4DSGIS parameter <format> is not |
| COLOR_INDEX, RED, GREEN, BLUE, ALPHA, RGB, RGBA, LUMINANCE, or |
| LUMINANCE_ALPHA (or ABGR_EXT if EXT_abgr is supported). |
| |
| INVALID_ENUM is generated if TexImage4DSGIS parameter <type> is not |
| UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT. |
| |
| INVALID_OPERATION is generated if TexImage4DSGIS is called between |
| execution of Begin and the corresponding execution of End. |
| |
| TEXTURE_TOO_LARGE_SGI is generated if the texture as specified cannot be |
| accommodated by the implementation. This error will not occur if none |
| of <width>, <height>, or <depth> is greater than MAX_4D_TEXTURE_SIZE_SGIS. |
| |
| INVALID_ENUM is generated by TexSubImage4DSGIS if its <target> parameter |
| is not TEXTURE_4D_SGIS. |
| |
| INVALID_VALUE is generated by TexSubImage4DSGIS if the specified texture |
| array has not been defined by a previous TexImage4DSGIS operation. |
| |
| INVALID_VALUE is generated if TexSubImage4DSGIS parameter <level> is not |
| equal to zero. |
| |
| INVALID_VALUE is generated if TexSubImage4DSGIS parameter <width>, |
| <height>, <depth>, or <extent> is negative. |
| |
| INVALID_VALUE is generated if TexSubImage4DSGIS parameter <xoffset>, |
| <yoffset>, <zoffset>, or <woffset> is less than -TEXTURE_BORDER. |
| |
| INVALID_VALUE is generated by TexSubImage4DSGIS if |
| (xoffset + width) > (TEXTURE_WIDTH - TEXTURE_BORDER), or if |
| (yoffset + height) > (TEXTURE_HEIGHT - TEXTURE_BORDER), or if |
| (zoffset + depth) > (TEXTURE_DEPTH_EXT - TEXTURE_BORDER), or if |
| (woffset + extent) > (TEXTURE_4DSIZE_SGIS - TEXTURE_BORDER). |
| |
| INVALID_ENUM is generated if TexSubImage4DSGIS parameter <format> is not |
| COLOR_INDEX, RED, GREEN, BLUE, ALPHA, RGB, RGBA, LUMINANCE, or |
| LUMINANCE_ALPHA (or ABGR_EXT if EXT_abgr is supported). |
| |
| INVALID_ENUM is generated if TexSubImage4DSGIS parameter <type> is not |
| UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT. |
| |
| INVALID_OPERATION is generated if TexSubImage4DSGIS is called between |
| execution of Begin and the corresponding execution of End. |
| |
| New State |
| |
| Get Value Get Command Type Initial Value Attribute |
| --------- ----------- ---- ------------- --------- |
| UNPACK_SKIP_VOLUMES_SGIS GetIntegerv Z+ 0 - |
| UNPACK_IMAGE_DEPTH_SGIS GetIntegerv Z+ 0 - |
| PACK_SKIP_VOLUMES_SGIS GetIntegerv Z+ 0 - |
| PACK_IMAGE_DEPTH_SGIS GetIntegerv Z+ 0 - |
| TEXTURE_4D_SGIS IsEnabled B FALSE texture/enable |
| TEXTURE_WRAP_Q_SGIS GetTexParameteriv 1 x Z2 REPEAT texture |
| TEXTURE_4DSIZE_SGIS GetTexLevelParameteriv 1 x 2 x Z+ 0 - |
| |
| TEXTURE GetTexImage 4 x 1 x levels x I null - |
| TEXTURE_RED_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 - |
| TEXTURE_GREEN_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 - |
| TEXTURE_BLUE_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 - |
| TEXTURE_ALPHA_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 - |
| TEXTURE_LUMINANCE_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 - |
| TEXTURE_INTENSITY_SIZE_EXT GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 - |
| TEXTURE_WIDTH GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 - |
| TEXTURE_HEIGHT GetTexLevelParameteriv 3 x 2 x levels x Z+ 0 - |
| TEXTURE_DEPTH_EXT GetTexLevelParameteriv 2 x 2 x levels x Z+ 0 - |
| TEXTURE_BORDER GetTexLevelParameteriv 4 x 2 x levels x Z+ 0 - |
| TEXTURE_COMPONENTS (1D and 2D) GetTexLevelParameteriv 2 x 2 x levels x Z42 1 - |
| TEXTURE_COMPONENTS (3D and 4D) GetTexLevelParameteriv 2 x 2 x levels x Z38 LUMINANCE - |
| TEXTURE_BORDER_COLOR GetTexParameteriv 4 x C 0, 0, 0, 0 texture |
| TEXTURE_MIN_FILTER GetTexParameteriv 4 x Z7 NEAREST_MIPMAP_LINEAR texture |
| TEXTURE_MAG_FILTER GetTexParameteriv 4 x Z3 LINEAR texture |
| TEXTURE_WRAP_S GetTexParameteriv 4 x Z2 REPEAT texture |
| TEXTURE_WRAP_T GetTexParameteriv 3 x Z2 REPEAT texture |
| TEXTURE_WRAP_R_EXT GetTexParameteriv 2 x Z2 REPEAT texture |
| |
| New Implementation Dependent State |
| |
| Get Value Get Command Type Minimum Value |
| --------- ----------- ---- ------------- |
| MAX_4D_TEXTURE_SIZE_SGIS GetIntegerv Z+ 16 |