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

# glColorPointer(3x)

define an array of colors

## NAME

**glColorPointer** - define an array of colors

## C SPECIFICATION

void **glColorPointer**( GLint *size*,

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

delim $$

## PARAMETERS

- *size*

  Specifies the number of components per color. Must be 3 or 4. The initial value is 4.

- *type*

  Specifies the data type of each color component in the array. Symbolic constants **GL\_BYTE**, **GL\_UNSIGNED\_BYTE**, **GL\_SHORT**, **GL\_UNSIGNED\_SHORT**, **GL\_INT**, **GL\_UNSIGNED\_INT**, **GL\_FLOAT**, and **GL\_DOUBLE** are accepted.  The initial value is **GL\_FLOAT**.

- *stride*

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

- *ptr*

  Specifies a pointer to the first component of the first color element in the array.

## DESCRIPTION

**glColorPointer** specifies the location and data  of an array of color components to use when rendering. *size* specifies the number of components per color, and must be 3 or 4. *type* specifies the data type of each color component, and *stride* specifies the byte stride from one color 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 color array is specified,  *size*, *type*, *stride*, and *ptr* are saved as client-side state.

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

## NOTES

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

The color array is initially disabled and isn't accessed when **glArrayElement**, **glDrawArrays**, **glDrawRangeElements**,  or **glDrawElements** is called.

Execution of **glColorPointer** 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.

**glColorPointer** is typically implemented on the client side.

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

## ERRORS

**GL\_INVALID\_VALUE** is generated if *size* is not 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\_COLOR\_ARRAY**\
 **glGet** with argument **GL\_COLOR\_ARRAY\_SIZE**\
 **glGet** with argument **GL\_COLOR\_ARRAY\_TYPE**\
 **glGet** with argument **GL\_COLOR\_ARRAY\_STRIDE**\
 **glGetPointerv** with argument **GL\_COLOR\_ARRAY\_POINTER**

## SEE ALSO

**glArrayElement(3G)**, **glDrawArrays(3G)**, **glDrawElements(3G)**, **glEdgeFlagPointer(3G)**, **glEnable(3G)**, **glGetPointerv(3G)**, **glIndexPointer(3G)**, **glInterleavedArrays(3G)**, **glNormalPointer(3G)**, **glPopClientAttrib(3G)**, **glPushClientAttrib(3G)**, **glTexCoordPointer(3G)**, **glVertexPointer(3G)**
