Specifies the format of the pixel data. For transfers of depth, stencil, or depth/stencil data, you must use GL_DEPTH_COMPONENT​, GL_STENCIL_INDEX​, or GL_DEPTH_STENCIL​, where appropriate. For transfers of normalized integer or floating-point color image data, you must use one of the following: GL_RED​, GL_GREEN​, GL_BLUE​, GL_RG​, GL_RGB​, GL_BGR​, GL_RGBA​, and GL_BGRA​. For transfers of non-normalized integer data, you must use one of the following: GL_RED_INTEGER​, GL_GREEN_INTEGER​, GL_BLUE_INTEGER​, GL_RG_INTEGER​, GL_RGB_INTEGER​, GL_BGR_INTEGER​, GL_RGBA_INTEGER​, and GL_BGRA_INTEGER​. Even if no actual pixel transfer is made (data​ is NULL and no buffer is bound to GL_PIXEL_UNPACK_BUFFER​), you must set this parameter correctly for the internal format of the destination image.

Specifies a pointer to the image data in memory, or if a buffer is bound to GL_PIXEL_UNPACK_BUFFER​, this provides an integer offset into the bound buffer object. If a buffer is not bound to GL_PIXEL_UNPACK_BUFFER​, this parameter may not be NULL.

Description

Texturing maps a portion of a specified texture image onto each graphical primitive for which texturing is enabled.

glTexSubImage2D redefines a contiguous subregion of an existing two-dimensional or one-dimensional array texture image. The texels referenced by data​ replace the portion of the existing texture array with x indices xoffset​ and xoffset + width - 1, inclusive, and y indices yoffset​ and yoffset + height - 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.

If a non-zero named buffer object is bound to the GL_PIXEL_UNPACK_BUFFER​ target (see glBindBuffer​) while a texture image is specified, data​ is treated as a byte offset into the buffer object's data store.

GL_INVALID_OPERATION​ is generated if the texture array has not been defined by a previous glTexImage2D​ operation.

GL_INVALID_OPERATION​ is generated if type​ is one of GL_UNSIGNED_BYTE_3_3_2​, GL_UNSIGNED_BYTE_2_3_3_REV​, GL_UNSIGNED_SHORT_5_6_5​, or GL_UNSIGNED_SHORT_5_6_5_REV​ and format​ is not GL_RGB​.

GL_INVALID_OPERATION​ is generated if type​ is one of GL_UNSIGNED_SHORT_4_4_4_4​, GL_UNSIGNED_SHORT_4_4_4_4_REV​, GL_UNSIGNED_SHORT_5_5_5_1​, GL_UNSIGNED_SHORT_1_5_5_5_REV​, GL_UNSIGNED_INT_8_8_8_8​, GL_UNSIGNED_INT_8_8_8_8_REV​, GL_UNSIGNED_INT_10_10_10_2​, or GL_UNSIGNED_INT_2_10_10_10_REV​ and format​ is neither GL_RGBA​ nor GL_BGRA​.

GL_INVALID_OPERATION​ is generated if format​ is GL_STENCIL_INDEX​ and the base internal format is not GL_STENCIL_INDEX​.

GL_INVALID_OPERATION​ is generated if a non-zero buffer object name is bound to the GL_PIXEL_UNPACK_BUFFER​ target and the buffer object's data store is currently mapped.

GL_INVALID_OPERATION​ is generated if a non-zero buffer object name is bound to the GL_PIXEL_UNPACK_BUFFER​ target and the data would be unpacked from the buffer object such that the memory reads required would exceed the data store size.

GL_INVALID_OPERATION​ is generated if a non-zero buffer object name is bound to the GL_PIXEL_UNPACK_BUFFER​ target and data​ is not evenly divisible into the number of bytes needed to store in memory a datum indicated by type​.