home *** CD-ROM | disk | FTP | other *** search
- '''OpenGL extension EXT.point_parameters
-
- Overview (from the spec)
-
- This extension supports additional geometric characteristics of points. It
- can be used to render particles or tiny light sources, commonly referred
- as "Light points".
-
- The raster brightness of a point is a function of the point area, point
- color, point transparency, and the response of the display's electron gun
- and phosphor. The point area and the point transparency are derived from the
- point size, currently provided with the <size> parameter of glPointSize.
-
- The primary motivation is to allow the size of a point to be affected by
- distance attenuation. When distance attenuation has an effect, the final
- point size decreases as the distance of the point from the eye increases.
-
- The secondary motivation is a mean to control the mapping from the point
- size to the raster point area and point transparency. This is done in order
- to increase the dynamic range of the raster brightness of points. In other
- words, the alpha component of a point may be decreased (and its transparency
- increased) as its area shrinks below a defined threshold.
-
- This extension defines a derived point size to be closely related to point
- brightness. The brightness of a point is given by:
-
- 1
- dist_atten(d) = -------------------
- a + b * d + c * d^2
-
- brightness(Pe) = Brightness * dist_atten(|Pe|)
-
- where 'Pe' is the point in eye coordinates, and 'Brightness' is some initial
- value proportional to the square of the size provided with glPointSize. Here
- we simplify the raster brightness to be a function of the rasterized point
- area and point transparency.
-
- brightness(Pe) brightness(Pe) >= Threshold_Area
- area(Pe) =
- Threshold_Area Otherwise
-
- factor(Pe) = brightness(Pe)/Threshold_Area
-
- alpha(Pe) = Alpha * factor(Pe)
-
- where 'Alpha' comes with the point color (possibly modified by lighting).
-
- 'Threshold_Area' above is in area units. Thus, it is proportional to the
- square of the threshold provided by the programmer through this extension.
-
- The new point size derivation method applies to all points, while the
- threshold applies to multisample points only.
-
- The official definition of this extension is available here:
- http://oss.sgi.com/projects/ogl-sample/registry/EXT/point_parameters.txt
-
- Automatically generated by the get_gl_extensions script, do not edit!
- '''
- from OpenGL import platform, constants, constant, arrays
- from OpenGL import extensions
- from OpenGL.GL import glget
- import ctypes
- EXTENSION_NAME = 'GL_EXT_point_parameters'
- GL_POINT_SIZE_MIN_EXT = constant.Constant( 'GL_POINT_SIZE_MIN_EXT', 0x8126 )
- GL_POINT_SIZE_MAX_EXT = constant.Constant( 'GL_POINT_SIZE_MAX_EXT', 0x8127 )
- GL_POINT_FADE_THRESHOLD_SIZE_EXT = constant.Constant( 'GL_POINT_FADE_THRESHOLD_SIZE_EXT', 0x8128 )
- GL_DISTANCE_ATTENUATION_EXT = constant.Constant( 'GL_DISTANCE_ATTENUATION_EXT', 0x8129 )
- glPointParameterfEXT = platform.createExtensionFunction(
- 'glPointParameterfEXT', dll=platform.GL,
- extension=EXTENSION_NAME,
- resultType=None,
- argTypes=(constants.GLenum, constants.GLfloat,),
- doc = 'glPointParameterfEXT( GLenum(pname), GLfloat(param) ) -> None',
- argNames = ('pname', 'param',),
- )
-
- glPointParameterfvEXT = platform.createExtensionFunction(
- 'glPointParameterfvEXT', dll=platform.GL,
- extension=EXTENSION_NAME,
- resultType=None,
- argTypes=(constants.GLenum, arrays.GLfloatArray,),
- doc = 'glPointParameterfvEXT( GLenum(pname), GLfloatArray(params) ) -> None',
- argNames = ('pname', 'params',),
- )
-
-
- def glInitPointParametersEXT():
- '''Return boolean indicating whether this extension is available'''
- return extensions.hasGLExtension( EXTENSION_NAME )
-