_C_ License Applicability. Except to the extent portions of this file are
_C_ made subject to an alternative license as permitted in the SGI Free
_C_ Software License B, Version 1.1 (the "License"), the contents of this
_C_ file are subject only to the provisions of the License. You may not use
_C_ this file except in compliance with the License. You may obtain a copy
_C_ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
_C_ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
_C_ 
_C_ http://oss.sgi.com/projects/FreeB
_C_ 
_C_ Note that, as provided in the License, the Software is distributed on an
_C_ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
_C_ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
_C_ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
_C_ PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
_C_ 
_C_ Original Code. The Original Code is: OpenGL Sample Implementation,
_C_ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
_C_ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
_C_ Copyright in any portions created by third parties is as indicated
_C_ elsewhere herein. All Rights Reserved.
_C_ 
_C_ Additional Notice Provisions: The application programming interfaces
_C_ established by SGI in conjunction with the Original Code are The
_C_ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
_C_ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
_C_ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
_C_ Window System(R) (Version 1.3), released October 19, 1998. This software
_C_ was created using the OpenGL(R) version 1.2.1 Sample Implementation
_C_ published by SGI, but has not been independently verified as being
_C_ compliant with the OpenGL(R) version 1.2.1 Specification.
_C_
_C_ $Date$ $Revision$
_C_ The first character in this file must be an '_'!
_C_ Anything on a line after _C_ is ignored
_define(_filters,tbl|eqn)_C_
_C_      eqn is automatically replaced with neqn for nroff
_header(TexSubImage2D,specify a two-dimensional texture subimage)
_names(TexSubImage2D)
.EQ
delim $$
.EN
.SH PARAMETERS
_phead(_param1)
Specifies the target texture.
Must be _const(TEXTURE_2D).
_phead(_param2)
Specifies the level-of-detail number.
Level 0 is the base image level.
Level \f2n\fP is the \f2n\fPth mipmap reduction image.
_phead(_param3)
Specifies a texel offset in the x direction within the texture array.
_phead(_param4)
Specifies a texel offset in the y direction within the texture array.
_phead(_param5)
Specifies the width of the texture subimage.
_phead(_param6)
Specifies the height of the texture subimage.
_phead(_param7)
Specifies the format of the pixel data.
The following symbolic values are accepted:
_const(COLOR_INDEX),
_const(RED),
_const(GREEN),
_const(BLUE),
_const(ALPHA),
_const(RGB),
_const(BGR),
_const(RGBA),
_const(BGRA),
_C_ _const(ABGR_EXT),
_const(LUMINANCE), and
_const(LUMINANCE_ALPHA).
_phead(_param8)
Specifies the data type of the pixel data.
The following symbolic values are accepted:
_const(UNSIGNED_BYTE),
_const(BYTE),
_const(BITMAP),
_const(UNSIGNED_SHORT),
_const(SHORT),
_const(UNSIGNED_INT),
_const(INT), 
_const(FLOAT),
_const(UNSIGNED_BYTE_3_3_2),
_const(UNSIGNED_BYTE_2_3_3_REV),
_const(UNSIGNED_SHORT_5_6_5),
_const(UNSIGNED_SHORT_5_6_5_REV),
_const(UNSIGNED_SHORT_4_4_4_4),
_const(UNSIGNED_SHORT_4_4_4_4_REV),
_const(UNSIGNED_SHORT_5_5_5_1),
_const(UNSIGNED_SHORT_1_5_5_5_REV),
_const(UNSIGNED_INT_8_8_8_8),
_const(UNSIGNED_INT_8_8_8_8_REV),
_const(UNSIGNED_INT_10_10_10_2), and
_const(UNSIGNED_INT_2_10_10_10_REV).
_phead(_param9)
Specifies a pointer to the image data in memory.
.SH DESCRIPTION
Texturing maps a portion of a specified texture image
onto each graphical primitive for which texturing is enabled.
To enable and disable two-dimensional texturing, call _cmnd(Enable)
and _cmnd(Disable) with argument _const(TEXTURE_2D).
.P
_cmnd redefines a contiguous subregion of an existing two-dimensional
texture image.
The texels referenced by _param9 replace the portion of the
existing texture array with x indices _param3 and $_eqnparam3~+~_eqnparam5~-~1$,
inclusive,
and y indices _param4 and $_eqnparam4~+~_eqnparam6~-~1$, inclusive. 
This region may not include any texels outside the range of the
texture array as it was originally specified.
It is not an error to specify a subtexture with zero width or height, but
such a specification has no effect.
.SH NOTES
_cmnd is available only if the GL version is 1.1 or greater.
.P
Texturing has no effect in color index mode.
.P
_cmnd(PixelStore) and _cmnd(PixelTransfer) modes affect texture images
in exactly the way they affect _cmnd(DrawPixels).
.P
Formats _const(BGR), and _const(BGRA) and types
_const(UNSIGNED_BYTE_3_3_2),
_const(UNSIGNED_BYTE_2_3_3_REV),
_const(UNSIGNED_SHORT_5_6_5),
_const(UNSIGNED_SHORT_5_6_5_REV),
_const(UNSIGNED_SHORT_4_4_4_4),
_const(UNSIGNED_SHORT_4_4_4_4_REV),
_const(UNSIGNED_SHORT_5_5_5_1),
_const(UNSIGNED_SHORT_1_5_5_5_REV),
_const(UNSIGNED_INT_8_8_8_8),
_const(UNSIGNED_INT_8_8_8_8_REV),
_const(UNSIGNED_INT_10_10_10_2), and
_const(UNSIGNED_INT_2_10_10_10_REV) are available only if the GL version 
is 1.2 or greater.
.P
When the _arbstring(multitexture) extension is supported, _cmnd
specifies a two-dimensional sub texture for the current texture unit,
specified with _cmnd(ActiveTextureARB).
.P
When the _arbstring(imaging) extension is supported, the RGBA components
specified in _param9 may be processed by the imaging pipeline.  See
_cmnd(TexImage1D) for specific details.
.SH ERRORS
_const(INVALID_ENUM) is generated if _param1 is not _const(TEXTURE_2D). 
.P
_const(INVALID_OPERATION) is generated if the texture array has not
been defined by a previous _cmnd(TexImage2D) operation.
.P
_const(INVALID_VALUE) is generated if _param2 is less than 0.
.P 
_const(INVALID_VALUE) may be generated if _param2 is greater
than $log sub 2$\f2max\fP,
where \f2max\fP is the returned value of _const(MAX_TEXTURE_SIZE).
.P
_const(INVALID_VALUE) is generated if $_eqnparam3 ~<~ ~-b$,
$(_eqnparam3~+~_eqnparam5) ~>~ (w~-~b)$, 
$_eqnparam4 ~<~ ~-b$, or $(_eqnparam4 ~+~ _eqnparam6) ~>~ (h~-~b)$,
where $w$ is the _const(TEXTURE_WIDTH), 
$h$ is the _const(TEXTURE_HEIGHT), and $b$ is the border width 
of the texture image being modified.
Note that $w$ and $h$ include twice the border width.
.P
_const(INVALID_VALUE) is generated if _param5 or _param6 is less than 0.
.P
_const(INVALID_ENUM) is generated if _param7 is not an accepted
format constant.
.P
_const(INVALID_ENUM) is generated if _param8 is not a type constant.
.P
_const(INVALID_ENUM) is generated if _param8 is _const(BITMAP) and
_param7 is not _const(COLOR_INDEX).
.P
_const(INVALID_OPERATION) is generated if _cmnd is executed
between the execution of _cmnd(Begin) and the corresponding
execution of _cmnd(End).
.P
_const(INVALID_OPERATION) is generated if _param8 is one of
_const(UNSIGNED_BYTE_3_3_2),
_const(UNSIGNED_BYTE_2_3_3_REV),
_const(UNSIGNED_SHORT_5_6_5), or
_const(UNSIGNED_SHORT_5_6_5_REV)
and _param7 is not _const(RGB).
.P
_const(INVALID_OPERATION) is generated if _param8 is one of
_const(UNSIGNED_SHORT_4_4_4_4),
_const(UNSIGNED_SHORT_4_4_4_4_REV),
_const(UNSIGNED_SHORT_5_5_5_1),
_const(UNSIGNED_SHORT_1_5_5_5_REV),
_const(UNSIGNED_INT_8_8_8_8),
_const(UNSIGNED_INT_8_8_8_8_REV),
_const(UNSIGNED_INT_10_10_10_2), or
_const(UNSIGNED_INT_2_10_10_10_REV)
and _param7 is neither _const(RGBA) nor _const(BGRA).
.SH ASSOCIATED GETS
_cmnd(GetTexImage)
.br
_cmnd(IsEnabled) with argument _const(TEXTURE_2D)
.SH SEE ALSO
_cmnd(ActiveTextureARB),
_cmnd(CopyTexImage1D),
_cmnd(CopyTexImage2D),
_cmnd(CopyTexSubImage1D),
_cmnd(CopyTexSubImage2D),
_cmnd(CopyTexSubImage3D),
_cmnd(DrawPixels),
_cmnd(PixelStore),
_cmnd(PixelTransfer),
_cmnd(TexEnv),
_cmnd(TexGen),
_cmnd(TexImage1D),
_cmnd(TexImage2D),
_cmnd(TexImage3D),
_cmnd(TexSubImage1D),
_cmnd(TexSubImage3D),
_cmnd(TexParameter)

