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

# glFog(3x)

specify fog parameters

## NAME

**glFogf, glFogi, glFogfv, glFogiv** - specify fog parameters

## C SPECIFICATION

void **glFogf**( GLenum *pname*,

```
	GLfloat param )
```

void **glFogi**( GLenum *pname*,

```
	GLint param )
```

delim $$

## PARAMETERS

- *pname*

  Specifies a single-valued fog parameter. **GL\_FOG\_MODE**, **GL\_FOG\_DENSITY**, **GL\_FOG\_START**, **GL\_FOG\_END**, and **GL\_FOG\_INDEX** are accepted.

- *param*

  Specifies the value that *pname* will be set to.

## C SPECIFICATION

void **glFogfv**( GLenum *pname*,

```
	const GLfloat *params )
```

void **glFogiv**( GLenum *pname*,

```
	const GLint *params )
```

## PARAMETERS

- *pname*

  Specifies a fog parameter. **GL\_FOG\_MODE**, **GL\_FOG\_DENSITY**, **GL\_FOG\_START**, **GL\_FOG\_END**, **GL\_FOG\_INDEX**, and **GL\_FOG\_COLOR** are accepted.

- *params*

  Specifies the value or values to be assigned to *pname*. **GL\_FOG\_COLOR** requires an array of four values. All other parameters accept an array containing only a single value.

## DESCRIPTION

Fog is initially disabled. While enabled, fog affects rasterized geometry, bitmaps, and pixel blocks, but not buffer clear operations. To enable and disable fog, call **glEnable** and **glDisable** with argument **GL\_FOG**.

**glFog** assigns the value or values in *params* to the fog parameter specified by *pname*. The following values are accepted for *pname*:

- **GL\_FOG\_MODE**

  *params* is a single integer or floating-point value that specifies the equation to be used to compute the fog blend factor, $f$. Three symbolic constants are accepted: **GL\_LINEAR**, **GL\_EXP**, and **GL\_EXP2**. The equations corresponding to these symbolic constants are defined below. The initial fog mode is **GL\_EXP**.

- **GL\_FOG\_DENSITY**

  *params* is a single integer or floating-point value that specifies $density$, the fog density used in both exponential fog equations. Only nonnegative densities are accepted. The initial fog density is 1.

- **GL\_FOG\_START**

  *params* is a single integer or floating-point value that specifies $start$, the near distance used in the linear fog equation. The initial near distance is 0.

- **GL\_FOG\_END**

  *params* is a single integer or floating-point value that specifies $end$, the far distance used in the linear fog equation. The initial far distance is 1.

- **GL\_FOG\_INDEX**

  *params* is a single integer or floating-point value that specifies $i sub f$, the fog color index. The initial fog index is 0.

- **GL\_FOG\_COLOR**

  *params* contains four integer or floating-point values that specify $C sub f$, the fog color. Integer values are mapped linearly such that the most positive representable value maps to 1.0, and the most negative representable value maps to -1.0. Floating-point values are mapped directly. After conversion, all color components are clamped to the range \[0,1\]. The initial fog color is (0, 0, 0, 0).

Fog blends a fog color with each rasterized pixel fragment's posttexturing color using a blending factor $f$. Factor $f$ is computed in one of three ways, depending on the fog mode. Let $z$ be the distance in eye coordinates from the origin to the fragment being fogged. The equation for **GL\_LINEAR** fog is\

f ~=~ {end ~-~ z} over {end ~-~ start}

The equation for **GL\_EXP** fog is\

f ~=~ e sup {-^(density ~cdot~ z)}

The equation for **GL\_EXP2** fog is\

f ~=~ e sup {-^(density ~cdot~ z)} sup 2

Regardless of the fog mode, $f$ is clamped to the range \[0, 1\] after it is computed. Then, if the GL is in RGBA color mode, the fragment's red, green, and blue colors, represented by $C sub r$, are replaced by

{C sub r} sup prime ~=~ f^C sub r ~+~ (1 - f)^C sub f

Fog does not affect a fragment's alpha component.

In color index mode, the fragment's color index $i sub r$ is replaced by

{i sub r} sup prime ~=~ i sub r ~+~ (1 - f)^i sub f

## ERRORS

**GL\_INVALID\_ENUM** is generated if *pname* is not an accepted value, or if *pname* is **GL\_FOG\_MODE** and *params* is not an accepted value.

**GL\_INVALID\_VALUE** is generated if *pname* is **GL\_FOG\_DENSITY**,  and *params* is negative.

**GL\_INVALID\_OPERATION** is generated if **glFog** is executed between the execution of **glBegin** and the corresponding execution of **glEnd**.

## ASSOCIATED GETS

**glIsEnabled** with argument **GL\_FOG**\
 **glGet** with argument **GL\_FOG\_COLOR**\
 **glGet** with argument **GL\_FOG\_INDEX**\
 **glGet** with argument **GL\_FOG\_DENSITY**\
 **glGet** with argument **GL\_FOG\_START**\
 **glGet** with argument **GL\_FOG\_END**\
 **glGet** with argument **GL\_FOG\_MODE**

## SEE ALSO

**glEnable(3G)**
