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

# glNormal(3x)

set the current normal vector delim $$

## NAME

**glNormal3b, glNormal3d, glNormal3f, glNormal3i, glNormal3s, glNormal3bv, glNormal3dv, glNormal3fv, glNormal3iv, glNormal3sv** - set the current normal vector

delim $$

## C SPECIFICATION

void **glNormal3b**( GLbyte *nx*,

```
	GLbyte ny,
	GLbyte nz )
```

void **glNormal3d**( GLdouble *nx*,

```
	GLdouble ny,
	GLdouble nz )
```

void **glNormal3f**( GLfloat *nx*,

```
	GLfloat ny,
	GLfloat nz )
```

void **glNormal3i**( GLint *nx*,

```
	GLint ny,
	GLint nz )
```

void **glNormal3s**( GLshort *nx*,

```
	GLshort ny,
	GLshort nz )
```

## PARAMETERS

- *nx*, *ny*, *nz*

  Specify the $x$, $y$, and $z$ coordinates of the new current normal. The initial value of the current normal is the unit vector, (0, 0, 1).

## C SPECIFICATION

void **glNormal3bv**( const GLbyte *\*v* )

```

```

void **glNormal3dv**( const GLdouble *\*v* )

```

```

void **glNormal3fv**( const GLfloat *\*v* )

```

```

void **glNormal3iv**( const GLint *\*v* )

```

```

void **glNormal3sv**( const GLshort *\*v* )

```

```

## PARAMETERS

- *v*

  Specifies a pointer to an array of three elements: the $x$, $y$, and $z$ coordinates of the new current normal.

## DESCRIPTION

The current normal is set to the given coordinates whenever **glNormal** is issued. Byte, short, or integer arguments are converted to floating-point\
  with a linear mapping that maps the most positive representable integer value to 1.0, and the most negative representable integer value to -1.0.

Normals specified with **glNormal** need not have unit length. If **GL\_NORMALIZE** is enabled, then normals of any length specified with **glNormal** are normalized after transformation. If **GL\_RESCALE\_NORMAL** is enabled, normals are scaled by a scaling factor derived from the modelview matrix.  **GL\_RESCALE\_NORMAL** requires that the originally specified normals were of unit length, and that the modelview matrix contain only uniform scales for proper results. To enable and disable normalization, call **glEnable** and **glDisable** with either **GL\_NORMALIZE** or **GL\_RESCALE\_NORMAL**. Normalization is initially disabled.

## NOTES

The current normal can be updated at any time. In particular, **glNormal** can be called between a call to **glBegin** and the corresponding call to **glEnd**.

## ASSOCIATED GETS

**glGet** with argument **GL\_CURRENT\_NORMAL**\
 **glIsEnabled** with argument **GL\_NORMALIZE**\
 **glIsEnabled** with argument **GL\_RESCALE\_NORMAL**

## SEE ALSO

**glBegin(3G)**, **glColor(3G)**, **glIndex(3G)**, **glNormalPointer(3G)**, **glTexCoord(3G)**, **glVertex(3G)**
