'''OpenGL extension APPLE.specular_vector This module customises the behaviour of the OpenGL.raw.GL.APPLE.specular_vector to provide a more Python-friendly API Overview (from the spec) An alternative specular lighting model is enabled by passing the LIGHT_MODEL_SPECULAR_VECTOR token as the parameter to LightModel, and TRUE as the parameter. The specular vector lighting model calculates the specular intensity as the dot product of the true reflection vector of the light source and the vector from the vertex to the viewpoint. This yields results that are visually similar to but often more realistic than the existing lighting model. Mathematically, the specular component s.n in the existing lighting model calculation is replaced with the following alternative calculation. Given three vectors, n, l, and p, where n is the unit normal vector at the vertex, l is the unit vector from the vertex to the light position, and p is the unit vector from the vertex to the viewpoint (or the vector {0,0,1} if LIGHT_MODEL_LOCAL_VIEWER is false), the specular component is given by (2 * cross(n, cross(n, l)) + l) . p All other lighting model and material parameters (shininess, spotlight, attenuation, local viewer, and direction/positional sources) operate normally. The specular vector lighting model affects both rgba and index modes. The official definition of this extension is available here: http://www.opengl.org/registry/specs/APPLE/specular_vector.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.APPLE.specular_vector import * from OpenGL.raw.GL.APPLE.specular_vector import _EXTENSION_NAME def glInitSpecularVectorAPPLE(): '''Return boolean indicating whether this extension is available''' from OpenGL import extensions return extensions.hasGLExtension( _EXTENSION_NAME ) ### END AUTOGENERATED SECTION