| '''OpenGL extension NV.fog_distance |
| |
| This module customises the behaviour of the |
| OpenGL.raw.GL.NV.fog_distance to provide a more |
| Python-friendly API |
| |
| Overview (from the spec) |
| |
| Ideally, the fog distance (used to compute the fog factor as |
| described in Section 3.10) should be computed as the per-fragment |
| Euclidean distance to the fragment center from the eye. In practice, |
| implementations "may choose to approximate the eye-coordinate |
| distance from the eye to each fragment center by abs(ze). Further, |
| [the fog factor] f need not be computed at each fragment, but may |
| be computed at each vertex and interpolated as other data are." |
| |
| This extension provides the application specific control over how |
| OpenGL computes the distance used in computing the fog factor. |
| |
| The extension supports three fog distance modes: "eye plane absolute", |
| where the fog distance is the absolute planar distance from the eye |
| plane (i.e., OpenGL's standard implementation allowance as cited above); |
| "eye plane", where the fog distance is the signed planar distance |
| from the eye plane; and "eye radial", where the fog distance is |
| computed as a Euclidean distance. In the case of the eye radial |
| fog distance mode, the distance may be computed per-vertex and then |
| interpolated per-fragment. |
| |
| The intent of this extension is to provide applications with better |
| control over the tradeoff between performance and fog quality. |
| The "eye planar" modes (signed or absolute) are straightforward |
| to implement with good performance, but scenes are consistently |
| under-fogged at the edges of the field of view. The "eye radial" |
| mode can provide for more accurate fog at the edges of the field of |
| view, but this assumes that either the eye radial fog distance is |
| computed per-fragment, or if the fog distance is computed per-vertex |
| and then interpolated per-fragment, then the scene must be |
| sufficiently tessellated. |
| |
| The official definition of this extension is available here: |
| http://www.opengl.org/registry/specs/NV/fog_distance.txt |
| ''' |
| from OpenGL import platform, constant, arrays |
| from OpenGL import extensions, wrapper |
| import ctypes |
| from OpenGL.raw.GL import _types, _glgets |
| from OpenGL.raw.GL.NV.fog_distance import * |
| from OpenGL.raw.GL.NV.fog_distance import _EXTENSION_NAME |
|
|
| def glInitFogDistanceNV(): |
| '''Return boolean indicating whether this extension is available''' |
| from OpenGL import extensions |
| return extensions.hasGLExtension( _EXTENSION_NAME ) |
|
|
|
|
| |