F
glFog
Chapter 6
156
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
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
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 post texturing 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) / (end - start)
The equation for GL_EXP fog is
f = e
- (density · z )
The equation for GL_EXP2 fog is
f = e
-(density · z )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 color C
r
is replaced by
C
r’
= f C
r
+ (1- f) C
f
In color index mode, the fragment’s color index i
r
is replaced by
i
r’
= i
r
+ (1 - f) i
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.