OpenGL.GL.NV.evaluators
index
/home/mcfletch/pylive/OpenGL/GL/NV/evaluators.py

OpenGL extension NV.evaluators
 
This module customises the behaviour of the 
OpenGL.raw.GL.NV.evaluators to provide a more 
Python-friendly API
 
Overview (from the spec)
        
        OpenGL evaluators provide applications with the capability to
        specify polynomial or rational curves and surfaces using control
        points relative to the Bezier basis.  The curves and surfaces are
        then drawn by evaluating the polynomials provided at various values
        for the u parameter of a curve or the (u,v) parameters of a surface.
        A tensor product formulation is used for the surfaces.
        
        For various historical reasons, evaluators have not been
        particularly popular as an interface for drawing curves and surfaces.
        This extension proposes a new interface for surfaces that provides a
        number of significant enhancements to the functionality provided by
        the original OpenGL evaluators.
        
        Many implementations never optimized evaluators, so applications
        often implemented their own algorithms instead.  This extension
        relaxes some restrictions that make it difficult to optimize
        evaluators.
        
        Also, new vertex attributes have been added to OpenGL through
        extensions, including multiple sets of texture coordinates, a
        secondary color, a fog coordinate, a vertex weight, and others.
        The extensions which added these vertex attributes never bothered
        to update the functionality of evaluators, since they were used so
        little in the first place.  In turn, evaluators have become more and
        more out of date, making it even less likely that developers will
        want to use them.  Most of the attributes are not a big loss, but
        support for multiple sets of texture coordinates would be absolutely
        essential to developers considering the use of evaluators.
        
        OpenGL evaluators only support rectangular patches, not triangular
        patches.  Although triangular patches can be converted into
        rectangular patches, direct support for triangular patches is likely
        to be more efficient.
        
        The tessellation algorithm used is too inflexible for most purposes;
        only the number of rows and columns can be specified.  Adjacent
        patches must then have identical numbers of rows and columns, or
        severe cracking will occur.  Ideally, a number of subdivisions could
        be specified for all four sides of a rectangular patch and for all
        three of a triangular patch.  This extension goes one step further
        and allows those numbers to be specified in floating-point, providing
        a mechanism for smoothly changing the level of detail of the surface.
        
        Meshes evaluated with EvalMesh are required to match up exactly
        with equivalent meshes evaluated with EvalCoord or EvalPoint.
        This makes it difficult or impossible to use optimizations such as
        forward differencing.
        
        Finally, little attention is given to some of the difficult problems
        that can arise when multiple patches are drawn.  Depending on the
        way evaluators are implemented, and depending on the orientation of
        edges, numerical accuracy problems can cause cracks to appear between
        patches with the same boundary control points.  This extension makes
        guarantees that an edge shared between two patches will match up
        exactly under certain conditions.
 
The official definition of this extension is available here:
http://www.opengl.org/registry/specs/NV/evaluators.txt

 
Modules
       
OpenGL.arrays
OpenGL.constant
OpenGL.constants
ctypes
OpenGL.extensions
OpenGL.GL.glget
OpenGL.platform
OpenGL.wrapper

 
Data
        EXTENSION_NAME = 'GL_NV_evaluators'
GL_EVAL_2D_NV = GL_EVAL_2D_NV
GL_EVAL_FRACTIONAL_TESSELLATION_NV = GL_EVAL_FRACTIONAL_TESSELLATION_NV
GL_EVAL_TRIANGULAR_2D_NV = GL_EVAL_TRIANGULAR_2D_NV
GL_EVAL_VERTEX_ATTRIB0_NV = GL_EVAL_VERTEX_ATTRIB0_NV
GL_EVAL_VERTEX_ATTRIB10_NV = GL_EVAL_VERTEX_ATTRIB10_NV
GL_EVAL_VERTEX_ATTRIB11_NV = GL_EVAL_VERTEX_ATTRIB11_NV
GL_EVAL_VERTEX_ATTRIB12_NV = GL_EVAL_VERTEX_ATTRIB12_NV
GL_EVAL_VERTEX_ATTRIB13_NV = GL_EVAL_VERTEX_ATTRIB13_NV
GL_EVAL_VERTEX_ATTRIB14_NV = GL_EVAL_VERTEX_ATTRIB14_NV
GL_EVAL_VERTEX_ATTRIB15_NV = GL_EVAL_VERTEX_ATTRIB15_NV
GL_EVAL_VERTEX_ATTRIB1_NV = GL_EVAL_VERTEX_ATTRIB1_NV
GL_EVAL_VERTEX_ATTRIB2_NV = GL_EVAL_VERTEX_ATTRIB2_NV
GL_EVAL_VERTEX_ATTRIB3_NV = GL_EVAL_VERTEX_ATTRIB3_NV
GL_EVAL_VERTEX_ATTRIB4_NV = GL_EVAL_VERTEX_ATTRIB4_NV
GL_EVAL_VERTEX_ATTRIB5_NV = GL_EVAL_VERTEX_ATTRIB5_NV
GL_EVAL_VERTEX_ATTRIB6_NV = GL_EVAL_VERTEX_ATTRIB6_NV
GL_EVAL_VERTEX_ATTRIB7_NV = GL_EVAL_VERTEX_ATTRIB7_NV
GL_EVAL_VERTEX_ATTRIB8_NV = GL_EVAL_VERTEX_ATTRIB8_NV
GL_EVAL_VERTEX_ATTRIB9_NV = GL_EVAL_VERTEX_ATTRIB9_NV
GL_MAP_ATTRIB_U_ORDER_NV = GL_MAP_ATTRIB_U_ORDER_NV
GL_MAP_ATTRIB_V_ORDER_NV = GL_MAP_ATTRIB_V_ORDER_NV
GL_MAP_TESSELLATION_NV = GL_MAP_TESSELLATION_NV
GL_MAX_MAP_TESSELLATION_NV = GL_MAX_MAP_TESSELLATION_NV
GL_MAX_RATIONAL_EVAL_ORDER_NV = GL_MAX_RATIONAL_EVAL_ORDER_NV
__file__ = '/home/mcfletch/pylive/OpenGL/GL/NV/evaluators.pyc'
__name__ = 'OpenGL.GL.NV.evaluators'
__package__ = 'OpenGL.GL.NV'
glEvalMapsNV = <OpenGL.platform.baseplatform.glEvalMapsNV object at 0x78dc890>
glGetMapAttribParameterfvNV = <OpenGL.platform.baseplatform.glGetMapAttribParameterfvNV object at 0x78dc810>
glGetMapAttribParameterivNV = <OpenGL.platform.baseplatform.glGetMapAttribParameterivNV object at 0x78dc750>
glGetMapControlPointsNV = <OpenGL.platform.baseplatform.glGetMapControlPointsNV object at 0x78ddbd0>
glGetMapParameterfvNV = <OpenGL.platform.baseplatform.glGetMapParameterfvNV object at 0x78d8e10>
glGetMapParameterivNV = <OpenGL.platform.baseplatform.glGetMapParameterivNV object at 0x78dc690>
glMapControlPointsNV = <OpenGL.platform.baseplatform.glMapControlPointsNV object at 0x78dc550>
glMapParameterfvNV = <OpenGL.platform.baseplatform.glMapParameterfvNV object at 0x78dc610>
glMapParameterivNV = <OpenGL.platform.baseplatform.glMapParameterivNV object at 0x78dc590>