gl.Fog(pname, param)
#GL_FOG
.
gl.Fog()
assigns the value or values in params to the fog parameter specified by pname
. The following values are accepted for pname:
#GL_FOG_MODE
param
is a single 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
param
is a single 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
param
is a single floating-point value that specifies start, the near distance used in the linear fog equation.
The initial near distance is 0.
#GL_FOG_END
param
is a single floating-point value that specifies end, the far distance used in the linear fog equation.
The initial far distance is 1.
#GL_FOG_INDEX
param
is a single floating-point value that specifies i f , the fog color index. The initial fog index is 0.
#GL_FOG_COLOR
param
must be a table containing four floating-point values that specify Cf, the fog color. 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 c be the distance in eye coordinates from the origin to the fragment
being fogged. The equation for #GL_LINEAR
fog is
f = (end - c) / (end - start) |
The equation for #GL_EXP
fog is
f = e^(-density*c) |
The equation for #GL_EXP2
fog is
f = e^(-density*c)^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 Cr , are replaced by
Cr' = f*Cr+(1-f)*Cf |
Fog does not affect a fragment's alpha component.
In color index mode, the fragment's color index ir is replaced by
ir' = f*ir+(1-f)*if |
Please consult an OpenGL reference manual for more information.
#GL_FOG_MODE
, #GL_FOG_DENSITY
, #GL_FOG_START
, #GL_FOG_END
, #GL_FOG_INDEX
, and #GL_FOG_COLOR
are acceptedpname
will be set to#GL_INVALID_ENUM
is generated if pname
is not an accepted value, or if pname
is #GL_FOG_MODE
and param
is not an accepted value.
#GL_INVALID_VALUE
is generated if pname
is #GL_FOG_DENSITY
and param
is negative.
#GL_INVALID_OPERATION
is generated if gl.Fog()
is executed between the execution of gl.Begin() and the corresponding execution of gl.End() .
#GL_FOG
gl.Get() with argument #GL_FOG_COLOR
gl.Get() with argument #GL_FOG_INDEX
gl.Get() with argument #GL_FOG_DENSITY
gl.Get() with argument #GL_FOG_START
gl.Get() with argument #GL_FOG_END
gl.Get() with argument #GL_FOG_MODE