Light | Dark

# docs.GL

OpenGL 3
OpenGL 2

# glColor

## Name

glColor — set the current color

## C Specification

`void glColor3b(` | GLbyte | red,
| GLbyte | green,
| GLbyte | blue`)`;

`void glColor3s(` | GLshort | red,
| GLshort | green,
| GLshort | blue`)`;

`void glColor3i(` | GLint | red,
| GLint | green,
| GLint | blue`)`;

`void glColor3f(` | GLfloat | red,
| GLfloat | green,
| GLfloat | blue`)`;

`void glColor3d(` | GLdouble | red,
| GLdouble | green,
| GLdouble | blue`)`;

`void glColor3ub(` | GLubyte | red,
| GLubyte | green,
| GLubyte | blue`)`;

`void glColor3us(` | GLushort | red,
| GLushort | green,
| GLushort | blue`)`;

`void glColor3ui(` | GLuint | red,
| GLuint | green,
| GLuint | blue`)`;

`void glColor4b(` | GLbyte | red,
| GLbyte | green,
| GLbyte | blue,
| GLbyte | alpha`)`;

`void glColor4s(` | GLshort | red,
| GLshort | green,
| GLshort | blue,
| GLshort | alpha`)`;

`void glColor4i(` | GLint | red,
| GLint | green,
| GLint | blue,
| GLint | alpha`)`;

`void glColor4f(` | GLfloat | red,
| GLfloat | green,
| GLfloat | blue,
| GLfloat | alpha`)`;

`void glColor4d(` | GLdouble | red,
| GLdouble | green,
| GLdouble | blue,
| GLdouble | alpha`)`;

`void glColor4ub(` | GLubyte | red,
| GLubyte | green,
| GLubyte | blue,
| GLubyte | alpha`)`;

`void glColor4us(` | GLushort | red,
| GLushort | green,
| GLushort | blue,
| GLushort | alpha`)`;

`void glColor4ui(` | GLuint | red,
| GLuint | green,
| GLuint | blue,
| GLuint | alpha`)`;

## Parameters

`red`, `green`, `blue`

  Specify new red, green, and blue values for the current color.

`alpha`

  Specifies a new alpha value for the current color. Included only in the four-argument `glColor4` commands.

## C Specification

`void glColor3bv(` | const GLbyte * | v`)`;

`void glColor3sv(` | const GLshort * | v`)`;

`void glColor3iv(` | const GLint * | v`)`;

`void glColor3fv(` | const GLfloat * | v`)`;

`void glColor3dv(` | const GLdouble * | v`)`;

`void glColor3ubv(` | const GLubyte * | v`)`;

`void glColor3usv(` | const GLushort * | v`)`;

`void glColor3uiv(` | const GLuint * | v`)`;

`void glColor4bv(` | const GLbyte * | v`)`;

`void glColor4sv(` | const GLshort * | v`)`;

`void glColor4iv(` | const GLint * | v`)`;

`void glColor4fv(` | const GLfloat * | v`)`;

`void glColor4dv(` | const GLdouble * | v`)`;

`void glColor4ubv(` | const GLubyte * | v`)`;

`void glColor4usv(` | const GLushort * | v`)`;

`void glColor4uiv(` | const GLuint * | v`)`;

## Parameters

`v`

  Specifies a pointer to an array that contains red, green, blue, and (sometimes) alpha values.

## Description

The GL stores both a current single-valued color index and a current four-valued RGBA color. `glColor` sets a new four-valued RGBA color. `glColor` has two major variants: `glColor3` and `glColor4`. `glColor3` variants specify new red, green, and blue values explicitly and set the current alpha value to 1.0 (full intensity) implicitly. `glColor4` variants specify all four color components explicitly.

`glColor3b`, `glColor4b`, `glColor3s`, `glColor4s`, `glColor3i`, and `glColor4i` take three or four signed byte, short, or long integers as arguments. When v is appended to the name, the color commands can take a pointer to an array of such values.

Current color values are stored in floating-point format, with unspecified mantissa and exponent sizes. Unsigned integer color components, when specified, are linearly mapped to floating-point values such that the largest representable value maps to 1.0 (full intensity), and 0 maps to 0.0 (zero intensity). Signed integer color components, when specified, are linearly mapped to floating-point values such that the most positive representable value maps to 1.0, and the most negative representable value maps to -1.0 . (Note that this mapping does not convert 0 precisely to 0.0.) Floating-point values are mapped directly.

Neither floating-point nor signed integer values are clamped to the range 0 1 before the current color is updated. However, color components are clamped to this range before they are interpolated or written into a color buffer.

## Notes

The initial value for the current color is (1, 1, 1, 1).

The current color can be updated at any time. In particular, `glColor` can be called between a call to glBegin and the corresponding call to glEnd.

## Associated Gets

glGet with argument `GL_CURRENT_COLOR`

glGet with argument `GL_RGBA_MODE`

## Tutorials

## See Also

`glColorPointer`, glIndex, glSecondaryColor

## Copyright

Copyright © 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see https://web.archive.org/web/20171022161616/http://oss.sgi.com/projects/FreeB/.

Think you can improve this page? Edit this page on GitHub.