| | '''OpenGL extension WIN.specular_fog |
| | |
| | This module customises the behaviour of the |
| | OpenGL.raw.GL.WIN.specular_fog to provide a more |
| | Python-friendly API |
| | |
| | Overview (from the spec) |
| | |
| | Specularly lit textures enhance the realism of a scene greatly. |
| | Using the current OpenGL lighting model, one cannot obtain specularly lit |
| | textures. This is because in the current OpenGL lighting model lighting |
| | is done ahead of texturing and texture-functions such as modulate are |
| | inadequate for such a simulation. What needs to be addressed is that, |
| | somehow an additional interpolant (specular color of that material) needs |
| | to be propagated till that stage of the pipeline where texture-mapping is |
| | performed. This interpolant is then added on to the fragment's color |
| | resulting from the texturing process before proceeding with the rest of |
| | the pipeline. |
| | |
| | This can be addressed very easily in software, but hardware |
| | is not so malleable. Currently most hardware does not support such a |
| | |
| | lighting model. However, some current hardware does support fogging, |
| | which takes place in the pipeline after texturing. This hardware |
| | assumes that the fog blend factor f is computed per-vertex and |
| | interpolates the value across the primitive. The WIN_specular_fog |
| | extension enables the use of such existing fog circuitry to obtain |
| | specularly lit textures without much performance degradation. |
| | |
| | To use it the programmer simply enables the extension with a call to |
| | Enable with the appropriate enumerant and sets the fog color to the |
| | desired specular color. |
| | |
| | The official definition of this extension is available here: |
| | http://www.opengl.org/registry/specs/WIN/specular_fog.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.WIN.specular_fog import * |
| | from OpenGL.raw.GL.WIN.specular_fog import _EXTENSION_NAME |
| |
|
| | def glInitSpecularFogWIN(): |
| | '''Return boolean indicating whether this extension is available''' |
| | from OpenGL import extensions |
| | return extensions.hasGLExtension( _EXTENSION_NAME ) |
| |
|
| |
|
| | |