---
name: "glTexCoordPointer"
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/glTexCoordPointer"
---

# glTexCoordPointer(3x)

define an array of texture coordinates

## NAME

**glTexCoordPointer** - define an array of texture coordinates

## C SPECIFICATION

void **glTexCoordPointer**( GLint *size*,

```
	GLenum type,
	GLsizei stride,
	const GLvoid *ptr )
```

delim $$

## PARAMETERS

- *size*

  Specifies the number of coordinates per array element. Must be 1, 2, 3 or 4. The initial value is 4.

- *type*

  Specifies the data type of each texture coordinate. Symbolic constants **GL\_SHORT**, **GL\_INT**, **GL\_FLOAT**, or **GL\_DOUBLE** are accepted. The initial value is **GL\_FLOAT**.

- *stride*

  Specifies the byte offset between consecutive array elements. If *stride* is 0, the array elements are understood  to be tightly packed. The initial value is 0.

- *ptr*

  Specifies a pointer to the first coordinate of the first element in the  array.  The initial value is 0.

## DESCRIPTION

**glTexCoordPointer** specifies the location and data  of an array of texture coordinates to use when rendering. *size* specifies the number of coordinates per element, and must be 1, 2, 3, or 4. *type* specifies the data type of each texture coordinate and *stride* specifies the byte stride from one array element to the next allowing vertices and attributes to be packed into a single array or stored in separate arrays. (Single-array storage may be more efficient on some implementations; see \
 **glInterleavedArrays**.) When a texture coordinate array is specified, *size*, *type*, *stride*, and *ptr* are saved client-side state.

To enable and disable the texture coordinate array, call  **glEnableClientState** and **glDisableClientState** with the argument **GL\_TEXTURE\_COORD\_ARRAY**. If  enabled, the texture coordinate array is used when **glDrawArrays**, **glDrawElements**, **glDrawRangeElements** or  **glArrayElement** is called.

Use **glDrawArrays** to construct a sequence of primitives (all of the same type) from prespecified vertex and vertex attribute arrays. Use **glArrayElement** to specify primitives by indexing vertices and vertex attributes and **glDrawElements** to construct a sequence of primitives by indexing vertices and vertex attributes.

## NOTES

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

The texture coordinate array is initially disabled and it won't be accessed when  **glArrayElement**, **glDrawElements**, **glDrawRangeElements**, or **glDrawArrays** is called.

Execution of **glTexCoordPointer** is not allowed between the execution of **glBegin** and the corresponding execution of **glEnd**, but an error may or may not be generated. If no error is generated, the operation is undefined.

**glTexCoordPointer** is typically implemented on the client side with no protocol.

The texture coordinate array parameters are client-side state and are therefore not saved or restored by **glPushAttrib** and **glPopAttrib**. Use **glPushClientAttrib** and  **glPopClientAttrib** instead.

When the **GL\_ARB\_imaging** extension is supported, **glTexCoordPointer** updates the texture coordinate array state of the active client texture unit, specified with **glClientActiveTextureARB**.

## ERRORS

**GL\_INVALID\_VALUE** is generated if *size* is not 1, 2, 3, or 4.

**GL\_INVALID\_ENUM** is generated if *type* is not an accepted value.

**GL\_INVALID\_VALUE** is generated if *stride* is negative.

## ASSOCIATED GETS

**glIsEnabled** with argument **GL\_TEXTURE\_COORD\_ARRAY**\
 **glGet** with argument **GL\_TEXTURE\_COORD\_ARRAY\_SIZE**\
 **glGet** with argument **GL\_TEXTURE\_COORD\_ARRAY\_TYPE**\
 **glGetPointerv** with argument **GL\_TEXTURE\_COORD\_ARRAY\_POINTER**

## SEE ALSO

**glArrayElement(3G)**, **glClientActiveTextureARB(3G)**, **glColorPointer(3G)**, **glDrawArrays(3G)**, **glDrawElements(3G)**, **glDrawRangeElements(3G)**, **glEdgeFlagPointer(3G)**, **glEnable(3G)**, **glGetPointerv(3G)**, **glIndexPointer(3G)**, **glNormalPointer(3G)**, **glPopClientAttrib(3G)**, **glPushClientAttrib(3G)**, **glTexCoord(3G)**, **glVertexPointer(3G)**
