OpenGL.GL.ARB.vertex_buffer_object
index
/home/mcfletch/pylive/OpenGL/GL/ARB/vertex_buffer_object.py

OpenGL extension ARB.vertex_buffer_object
 
This module customises the behaviour of the 
OpenGL.raw.GL.ARB.vertex_buffer_object to provide a more 
Python-friendly API
 
Overview (from the spec)
        
        This extension defines an interface that allows various types of data
        (especially vertex array data) to be cached in high-performance
        graphics memory on the server, thereby increasing the rate of data
        transfers.
        
        Chunks of data are encapsulated within "buffer objects", which
        conceptually are nothing more than arrays of bytes, just like any
        chunk of memory.  An API is provided whereby applications can read
        from or write to buffers, either via the GL itself (glBufferData,
        glBufferSubDataglGetBufferSubData) or via a pointer to the memory.
        
        The latter technique is known as "mapping" a buffer.  When an
        application maps a buffer, it is given a pointer to the memory.  When
        the application finishes reading from or writing to the memory, it is
        required to "unmap" the buffer before it is once again permitted to
        use that buffer as a GL data source or sink.  Mapping often allows
        applications to eliminate an extra data copy otherwise required to
        access the buffer, thereby enhancing performance.  In addition,
        requiring that applications unmap the buffer to use it as a data
        source or sink ensures that certain classes of latent synchronization
        bugs cannot occur.
        
        Although this extension only defines hooks for buffer objects to be
        used with OpenGL's vertex array APIs, the API defined in this
        extension permits buffer objects to be used as either data sources or
        sinks for any GL command that takes a pointer as an argument.
        Normally, in the absence of this extension, a pointer passed into the
        GL is simply a pointer to the user's data.  This extension defines
        a mechanism whereby this pointer is used not as a pointer to the data
        itself, but as an offset into a currently bound buffer object.  The
        buffer object ID zero is reserved, and when buffer object zero is
        bound to a given target, the commands affected by that buffer binding
        behave normally.  When a nonzero buffer ID is bound, then the pointer
        represents an offset.
        
        In the case of vertex arrays, this extension defines not merely one
        binding for all attributes, but a separate binding for each
        individual attribute.  As a result, applications can source their
        attributes from multiple buffers.  An application might, for example,
        have a model with constant texture coordinates and variable geometry.
        The texture coordinates might be retrieved from a buffer object with
        the usage mode "STATIC_DRAW", indicating to the GL that the
        application does not expect to update the contents of the buffer
        frequently or even at all, while the vertices might be retrieved from
        a buffer object with the usage mode "STREAM_DRAW", indicating that
        the vertices will be updated on a regular basis.
        
        In addition, a binding is defined by which applications can source
        index data (as used by DrawElements, DrawRangeElements, and
        MultiDrawElements) from a buffer object.  On some platforms, this
        enables very large models to be rendered with no more than a few
        small commands to the graphics device.
        
        It is expected that a future extension will allow sourcing pixel data
        from and writing pixel data to a buffer object.
 
The official definition of this extension is available here:
http://www.opengl.org/registry/specs/ARB/vertex_buffer_object.txt

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

 
Functions
       
_sizeOfArrayInput(pyArgs, index, wrapper)

 
Data
        ArrayDatatype = <OpenGL_accelerate.arraydatatype.ArrayDatatype object at 0x21b73c0>
EXTENSION_NAME = 'GL_ARB_vertex_buffer_object'
GL_ARRAY_BUFFER_ARB = GL_ARRAY_BUFFER_ARB
GL_ARRAY_BUFFER_BINDING_ARB = GL_ARRAY_BUFFER_BINDING_ARB
GL_BUFFER_ACCESS_ARB = GL_BUFFER_ACCESS_ARB
GL_BUFFER_MAPPED_ARB = GL_BUFFER_MAPPED_ARB
GL_BUFFER_MAP_POINTER_ARB = GL_BUFFER_MAP_POINTER_ARB
GL_BUFFER_SIZE_ARB = GL_BUFFER_SIZE_ARB
GL_BUFFER_USAGE_ARB = GL_BUFFER_USAGE_ARB
GL_COLOR_ARRAY_BUFFER_BINDING_ARB = GL_COLOR_ARRAY_BUFFER_BINDING_ARB
GL_DYNAMIC_COPY_ARB = GL_DYNAMIC_COPY_ARB
GL_DYNAMIC_DRAW_ARB = GL_DYNAMIC_DRAW_ARB
GL_DYNAMIC_READ_ARB = GL_DYNAMIC_READ_ARB
GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
GL_ELEMENT_ARRAY_BUFFER_ARB = GL_ELEMENT_ARRAY_BUFFER_ARB
GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB = GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
GL_INDEX_ARRAY_BUFFER_BINDING_ARB = GL_INDEX_ARRAY_BUFFER_BINDING_ARB
GL_NORMAL_ARRAY_BUFFER_BINDING_ARB = GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
GL_READ_ONLY_ARB = GL_READ_ONLY_ARB
GL_READ_WRITE_ARB = GL_READ_WRITE_ARB
GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
GL_STATIC_COPY_ARB = GL_STATIC_COPY_ARB
GL_STATIC_DRAW_ARB = GL_STATIC_DRAW_ARB
GL_STATIC_READ_ARB = GL_STATIC_READ_ARB
GL_STREAM_COPY_ARB = GL_STREAM_COPY_ARB
GL_STREAM_DRAW_ARB = GL_STREAM_DRAW_ARB
GL_STREAM_READ_ARB = GL_STREAM_READ_ARB
GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
GL_VERTEX_ARRAY_BUFFER_BINDING_ARB = GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB
GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB = GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB
GL_WRITE_ONLY_ARB = GL_WRITE_ONLY_ARB
__file__ = '/home/mcfletch/pylive/OpenGL/GL/ARB/vertex_buffer_object.pyc'
__name__ = 'OpenGL.GL.ARB.vertex_buffer_object'
__package__ = 'OpenGL.GL.ARB'
glBindBufferARB = <OpenGL.platform.baseplatform.glBindBufferARB object at 0x37b9f90>
glBufferDataARB = OpenGL.lazywrapper.lazy( 'glBufferDataARB' )
glBufferSubDataARB = OpenGL.lazywrapper.lazy( 'glBufferSubDataARB' )
glDeleteBuffersARB = <OpenGL.wrapper.glDeleteBuffersARB object at 0x37babd8>
glGenBuffersARB = <OpenGL.wrapper.glGenBuffersARB object at 0x37baf38>
glGetBufferParameterivARB = <OpenGL.platform.baseplatform.glGetBufferParameterivARB object at 0x3989310>
glGetBufferPointervARB = <OpenGL.platform.baseplatform.glGetBufferPointervARB object at 0x3989390>
glGetBufferSubDataARB = <OpenGL.platform.baseplatform.glGetBufferSubDataARB object at 0x3989210>
glIsBufferARB = <OpenGL.platform.baseplatform.glIsBufferARB object at 0x3989150>
glMapBufferARB = <OpenGL.platform.baseplatform.glMapBufferARB object at 0x3989250>
glUnmapBufferARB = <OpenGL.platform.baseplatform.glUnmapBufferARB object at 0x39892d0>