| Name |
| |
| EXT_subtexture |
| |
| Name Strings |
| |
| GL_EXT_subtexture |
| |
| Version |
| |
| $Date: 1995/10/03 05:39:55 $ $Revision: 1.17 $ |
| |
| Number |
| |
| 9 |
| |
| Dependencies |
| |
| EXT_abgr affects the definition of this extension |
| EXT_texture is required |
| EXT_texture3D affects the definition of this extension |
| |
| Overview |
| |
| This extension allows a contiguous portion of an already-existing |
| texture image to be redefined, without affecting the remaining portion |
| of the image, or any of the other state that describe the texture. No |
| provision is made to query a subregion of a texture. |
| |
| Semantics for null image pointers are defined for TexImage1D, |
| TexImage2D, and TexImage3DEXT. Null image pointers can be used by |
| applications to effectively support texture arrays whose dimensions |
| are not a power of 2. |
| |
| New Procedures and Functions |
| |
| void TexSubImage1DEXT(enum target, |
| int level, |
| int xoffset, |
| sizei width, |
| enum format, |
| enum type, |
| const void* pixels); |
| |
| void TexSubImage2DEXT(enum target, |
| int level, |
| int xoffset, |
| int yoffset, |
| sizei width, |
| sizei height, |
| enum format, |
| enum type, |
| const void* pixels); |
| |
| void TexSubImage3DEXT(enum target, |
| int level, |
| int xoffset, |
| int yoffset, |
| int zoffset, |
| sizei width, |
| sizei height, |
| sizei depth, |
| enum format, |
| enum type, |
| const void* pixels); |
| |
| New Tokens |
| |
| None |
| |
| Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) |
| |
| None |
| |
| Additions to Chapter 3 of the 1.0 Specification (Rasterization) |
| |
| This extension makes no changes or additions to the texture operations |
| defined in the GL Specification. Its sole purpose is to extend the |
| semantics of texture specification. |
| |
| TexSubImage1DEXT, TexSubImage2DEXT, and TexSubImage3DEXT redefine a |
| contiguous subregion of an existing texture image. Their <target> |
| parameters must be TEXTURE_1D, TEXTURE_2D, and TEXTURE_3D_EXT |
| respectively. (The proxy targets defined by EXT_texture are not |
| accepted by the subtexture commands.) <level>, <width>, <height>, |
| <depth>, <format>, <type>, and <pixels> correspond precisely to the |
| corresponding arguments of TexImage1D, TexImage2D, and TexImage3DEXT. |
| <xoffset>, <yoffset>, and <zoffset> specify texel offsets in the x, y, |
| and z directions within the texture array being modified. The new |
| image replaces the portion of the texture array indexed with |
| |
| xoffset <= i < (xoffset + width), |
| yoffset <= j < (yoffset + height), |
| zoffset <= k < (zoffset + depth), |
| |
| where i, j, and k are indexes as described in Figure 3.10 of the GL |
| Specification. It is an error for this region to include any texels |
| outside the range of the texture array as it was originally specified. |
| Specifically, the error INVALID_VALUE results if any of the following |
| conditions are met: |
| |
| xoffset < -TEXTURE_BORDER |
| (xoffset + width) > (TEXTURE_WIDTH - TEXTURE_BORDER) |
| yoffset < -TEXTURE_BORDER |
| (yoffset + height) > (TEXTURE_HEIGHT - TEXTURE_BORDER) |
| zoffset < -TEXTURE_BORDER |
| (zoffset + depth) > (TEXTURE_DEPTH_EXT - TEXTURE_BORDER) |
| |
| and TEXTURE_WIDTH, TEXTURE_HEIGHT, TEXTURE_DEPTH_EXT, and TEXTURE_BORDER |
| are the state values of the texture array that is being modified. Note |
| that TEXTURE_WIDTH, TEXTURE_HEIGHT, and TEXTURE_DEPTH_EXT include twice |
| the border width. |
| |
| It is not an error to specify a subtexture with zero width, height, or |
| depth. Such a specification has no effect, however. |
| |
| Counting from zero, each Nth pixel is assigned internal integer |
| coordinates [i,j,k], where |
| |
| i = xoffset + (N mod width), 1D, 2D, and 3D textures |
| |
| j = yoffset + ((N div width) mod height), 2D and 3D textures only |
| |
| k = zoffset + ((N div (width * height)) mod depth), 3D textures only |
| |
| and the div operator performs integer division with truncation. |
| |
| Null images |
| ----------- |
| |
| It is sometimes useful to define the parameters of a texture image |
| without actually initializing the contents of that image. In |
| particular, this capability is expected to be used in conjunction with |
| the TexSubImage commands that are defined in this extension. If |
| EXT_subtexture is implemented, and TexImage1D, TexImage2D, or |
| TexImage3DEXT is called with <pixels> equal to the null pointer |
| (a pointer to location zero in the C language), then the specified |
| texture is created as it would otherwise be, but no pixels are |
| processed, so the contents of the resulting texture image are undefined. |
| It is permissible to use such an uninitialized texture image, the |
| resulting color buffer contents being undefined only due to the random |
| color values of the texture image. |
| |
| 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) |
| |
| None |
| |
| Additions to Chapter 6 of the 1.0 Specification (State and State Requests) |
| |
| None. No provision is made to query a subregion of a texture image. |
| |
| Additions to the GLX Specification |
| |
| None |
| |
| GLX Protocol |
| |
| Several new GL rendering commands are added. All of these commands have pixel |
| data; thus they are sent to the server either as part of a glXRender request or |
| a glXRenderLarge request: |
| |
| TexSubImage1DEXT |
| 2 60+n+p rendering command length |
| 2 4099 |
| 1 BOOL swap_bytes |
| 1 BOOL lsb_first |
| 2 unused |
| 4 CARD32 row_length |
| 4 CARD32 skip_rows |
| 4 CARD32 skip_pixels |
| 4 CARD32 alignment |
| 4 ENUM target |
| 4 INT32 level |
| 4 INT32 xoffset |
| 4 INT32 yoffset |
| 4 INT32 width |
| 4 INT32 height |
| 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 64+n+p rendering command length |
| 4 4099 rendering command opcode |
| |
| If <width> < 0, <format> is invalid or <type> is invalid, then the command is |
| erroneous and n=0. The <yoffset> and <height> parameters in this request are |
| ignored. |
| |
| The structure of <pixels> is described in Appendix A of the GLX Protocol |
| Specification, "Pixel Data", using the parameters <swap_bytes>, <lsb_first>, |
| <row_length>, <skip_rows>, <skip_pixels>, <alignment>, <width>, <format>, and |
| <type> as given in the request and height = 1. |
| |
| |
| TexSubImage2DEXT |
| 2 60+n+p rendering command length |
| 2 4100 rendering command opcode |
| 1 BOOL swap_bytes |
| 1 BOOL lsb_first |
| 2 unused |
| 4 CARD32 row_length |
| 4 CARD32 skip_rows |
| 4 CARD32 skip_pixels |
| 4 CARD32 alignment |
| 4 ENUM target |
| 4 INT32 level |
| 4 INT32 xoffset |
| 4 INT32 yoffset |
| 4 INT32 width |
| 4 INT32 height |
| 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 64+n+p rendering command length |
| 4 4100 rendering command opcode |
| |
| If <width> < 0, <height> < 0, <format> is invalid or <type> is invalid, then |
| the command is erroneous and n=0. |
| |
| The structure of <pixels> is described in Appendix A of the GLX Protocol |
| Specification, "Pixel Data", using the parameters <swap_bytes>, <lsb_first>, |
| <row_length>, <skip_rows>, <skip_pixels>, <alignment>, <width>, <height>, |
| <format>, and <type> as given in the request. |
| |
| |
| TexSubImage3DEXT |
| 2 88+n+p rendering command length |
| 2 4115 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 4115 rendering command opcode |
| |
| If <width> < 0, <height> < 0, <depth> < 0, <format> is invalid or <type> is |
| invalid, then the command is erroneous and n=0. The <woffset>, <size4d>, |
| <image_depth>, and <skip_volumes> parameters in this request are ignored. |
| |
| <pixels> is arranged as a sequence of adjacent rectangles. Each rectangle is a |
| 2-dimensional image, whose structure is determined by the image height and the |
| parameters <swap_bytes>, <lsb_first>, <row_length>, <skip_rows>, <skip_pixels>, |
| <alignment>, <width>, <format>, and <type> given in the request. If <image_height> |
| is not positive then the number of rows (i.e., the image height) is <height>; |
| otherwise the number of rows is <image_height>. |
| |
| <skip_images> allows a sub-volume of the 3-dimensional image to be selected. |
| If <skip_images> is positive, then the pointer is advanced by <skip_images> |
| times the number of elements in one 2-dimensional image. Then <depth> |
| 2-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> parameters of TexSubImage1DEXT, |
| TexSubImage2DEXT, and TexSubImage3DEXT accept ABGR_EXT. Otherwise they |
| do not. |
| |
| Dependencies on EXT_texture |
| |
| EXT_texture is required. This extension builds on the notion of |
| internal image format, which is defined by EXT_texture. |
| |
| Dependencies on EXT_texture3D |
| |
| If EXT_texture3D is not supported, then TexSubImage3DEXT is not defined |
| by this extension. In this case, none of the description of |
| 3-dimensional texture mapping in this extension document is valid. The |
| descriptions of TexSubImage1DEXT and TexSubImage2DEXT remain valid, |
| however. |
| |
| Errors |
| |
| INVALID_ENUM is generated by TexSubImage1DEXT if its <target> parameter |
| is not TEXTURE_1D. |
| |
| INVALID_ENUM is generated by TexSubImage2DEXT if its <target> parameter |
| is not TEXTURE_2D. |
| |
| INVALID_ENUM is generated by TexSubImage3DEXT if its <target> parameter |
| is not TEXTURE_3D_EXT. |
| |
| INVALID_OPERATION is generated by TexSubImage1DEXT if the specified |
| texture array has not been defined by a previous TexImage1D operation. |
| |
| INVALID_OPERATION is generated by TexSubImage2DEXT if the specified |
| texture array has not been defined by a previous TexImage2D operation. |
| |
| INVALID_OPERATION is generated by TexSubImage3DEXT if the specified |
| texture array has not been defined by a previous TexImage3DEXT |
| operation. |
| |
| INVALID_VALUE is generated if <level> is less than zero |
| |
| INVALID_VALUE is generated if <width>, <height>, or <depth> is negative. |
| |
| INVALID_VALUE is generated if <xoffset>, <yoffset>, or <zoffset> is |
| less than -TEXTURE_BORDER. |
| |
| INVALID_VALUE is generated if |
| (xoffset + width) > (TEXTURE_WIDTH - TEXTURE_BORDER), or if |
| (yoffset + height) > (TEXTURE_HEIGHT - TEXTURE_BORDER), or if |
| (zoffset + depth) > (TEXTURE_DEPTH_EXT - TEXTURE_BORDER). |
| |
| INVALID_ENUM is generated if <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 <type> is not UNSIGNED_BYTE, BYTE, |
| UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT. |
| |
| INVALID_OPERATION is generated if TexSubImage1DEXT, TexSubImage2DEXT, |
| or TexSubImage3DEXT is called between execution of Begin and the |
| corresponding execution of End. |
| |
| New State |
| |
| None |
| |
| New Implementation Dependent State |
| |
| None |