---
name: "glCopyTexSubImage1D"
section: "3x"
platform: "linux"
package: "xlibmesa-gl-dev"
version: "4.3.0.dfsg.1-14sarge7"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/glCopyTexSubImage1D"
---

# glCopyTexSubImage1D(3x)

copy a one-dimensional texture subimage

## NAME

**glCopyTexSubImage1D** - copy a one-dimensional texture subimage

## C SPECIFICATION

void **glCopyTexSubImage1D**( GLenum *target*,

```
	GLint level,
	GLint xoffset,
	GLint x,
	GLint y,
	GLsizei width )
```

delim $$

## PARAMETERS

- *target*

  Specifies the target texture. Must be **GL\_TEXTURE\_1D**.

- *level*

  Specifies the level-of-detail number. Level 0 is the base image level. Level *n* is the *n*th mipmap reduction image.

- *xoffset*

  Specifies the texel offset within the texture array.

- *x*, *y*

  Specify the window coordinates of the left corner of the row of pixels to be copied.

- *width*

  Specifies the width of the texture subimage.

## DESCRIPTION

**glCopyTexSubImage1D** replaces a portion of a one-dimensional texture image with pixels from the current **GL\_READ\_BUFFER** (rather than from main memory, as is the case for **glTexSubImage1D**).

The screen-aligned pixel row with left corner at (*x*, *y*), and with length *width* replaces the portion of the texture array with x indices *xoffset* through $"xoffset" ~+~ "width" ~-~ 1$, inclusive. The destination in the texture array may not  include any texels outside the texture array as it was  originally specified.

The pixels in the row are processed exactly as if **glCopyPixels** had been called, but the process stops just before final conversion. At this point all pixel component values are clamped to the range \[0, 1\] and then converted to the texture's internal  for storage in the texel array.

It is not an error to specify a subtexture with zero width, but such a specification has no effect. If any of the pixels within the specified row of the current **GL\_READ\_BUFFER** are outside the read window associated with the current rendering context, then the values obtained for those pixels are undefined.

No change is made to the *internalformat*, *width*, or *border* parameters of the specified texture array or to texel values outside the specified subregion.

## NOTES

**glCopyTexSubImage1D** is available only if the GL version is 1.1 or greater.

Texturing has no effect in color index mode.

**glPixelStore** and **glPixelTransfer** modes affect texture images in exactly the way they affect **glDrawPixels**.

When the **GL\_ARB\_imaging** extension is supported, the RGBA components copied from the framebuffer may be processed by the imaging pipeline.  See **glTexImage1D** for specific details.

## ERRORS

**GL\_INVALID\_ENUM** is generated if *target* is not **GL\_TEXTURE\_1D**.

**GL\_INVALID\_OPERATION** is generated if the texture array has not been defined by a previous **glTexImage1D** or **glCopyTexImage1D** operation.

**GL\_INVALID\_VALUE** is generated if *level* is less than 0.

**GL\_INVALID\_VALUE** may be generated if *level*$\>log sub 2$ *max*, where *max* is the returned value of **GL\_MAX\_TEXTURE\_SIZE**.

**GL\_INVALID\_VALUE** is generated if *y*$ ~\<~ ~-b$ or if *width*$ ~\<~ ~-b$, where $b$  is the border width of the texture array.

**GL\_INVALID\_VALUE** is generated if $"xoffset" ~\<~ ~-b$, or  $("xoffset"~+~"width") ~\>~ (w-b)$, where $w$ is the **GL\_TEXTURE\_WIDTH**, and $b$ is the **GL\_TEXTURE\_BORDER**  of the texture image being modified. Note that $w$ includes twice the border width.

## ASSOCIATED GETS

**glGetTexImage**\
 **glIsEnabled** with argument **GL\_TEXTURE\_1D**

## SEE ALSO

**glCopyPixels(3G)**, **glCopyTexImage1D(3G)**, **glCopyTexImage2D(3G)**, **glCopyTexSubImage2D(3G)**, **glCopyTexSubImage3D(3G)**, **glPixelStore(3G)**, **glPixelTransfer(3G)**, **glReadBuffer(3G)**, **glTexEnv(3G)**, **glTexGen(3G)**, **glTexImage1D(3G)**, **glTexImage2D(3G)**, **glTexImage3D(3G)**, **glTexParameter(3G)**, **glTexSubImage1D(3G)**, **glTexSubImage2D(3G)**, **glTexSubImage3D(3G)**
