Viewing file: GL_1_5.py (4.28 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
'''OpenGL extension VERSION.GL_1_5
This module customises the behaviour of the OpenGL.raw.GL.VERSION.GL_1_5 to provide a more Python-friendly API
The official definition of this extension is available here: http://www.opengl.org/registry/specs/VERSION/GL_1_5.txt ''' from OpenGL import platform, constants, constant, arrays from OpenGL import extensions, wrapper from OpenGL.GL import glget import ctypes from OpenGL.raw.GL.VERSION.GL_1_5 import * ### END AUTOGENERATED SECTION from OpenGL.lazywrapper import lazy from OpenGL.arrays import ArrayDatatype
glDeleteBuffers = arrays.setInputArraySizeType( glDeleteBuffers, None, arrays.GLuintArray, 'buffers', )
glGenBuffers = wrapper.wrapper( glGenBuffers ).setOutput( 'buffers', lambda n: (n,), 'n', )
def _sizeOfArrayInput( pyArgs, index, wrapper ): return ( arrays.ArrayDatatype.arrayByteCount( pyArgs[index] ) )
@lazy( glBufferData ) def glBufferData( baseOperation, target, size, data=None, usage=None ): """Copy given data into the currently bound vertex-buffer-data object target -- the symbolic constant indicating which buffer type is intended size -- if provided, the count-in-bytes of the array data -- data-pointer to be used, may be None to initialize without copying over a data-set usage -- hint to the driver as to how to set up access to the buffer Note: parameter "size" can be omitted, which makes the signature glBufferData( target, data, usage ) instead of: glBufferData( target, size, data, usage ) """ if usage is None: usage = data data = size size = None data = ArrayDatatype.asArray( data ) if size is None: size = ArrayDatatype.arrayByteCount( data ) return baseOperation( target, size, data, usage )
@lazy( glBufferSubData ) def glBufferSubData( baseOperation, target, offset, size, data=None ): """Copy subset of data into the currently bound vertex-buffer-data object target -- the symbolic constant indicating which buffer type is intended offset -- offset from beginning of buffer at which to copy bytes size -- the count-in-bytes of the array (if an int/long), if None, calculate size from data, if an array and data is None, use as data (i.e. the parameter can be omitted and calculated) data -- data-pointer to be used, may be None to initialize without copying over a data-set Note that if size is not an int/long it is considered to be data """ try: if size is not None: size = int( size ) except TypeError, err: if data is not None: raise TypeError( """Expect an integer size *or* a data-array, not both""" ) data = size size = None data = ArrayDatatype.asArray( data ) if size is None: size = ArrayDatatype.arrayByteCount( data ) return baseOperation( target, offset, size, data )
glGetBufferParameteriv = wrapper.wrapper(glGetBufferParameteriv).setOutput( "params",(1,), ) @lazy( glGetBufferPointerv ) def glGetBufferPointerv( baseOperation, target, pname, params=None ): """Retrieve a ctypes pointer to buffer's data""" if params is None: size = glGetBufferParameteriv( target, GL_BUFFER_SIZE ) data = arrays.ArrayDatatype.zeros( (size,), GL_UNSIGNED_BYTE ) result = baseOperation( target, pname, ctypes.byref( data ) ) return data else: return baseOperation( target, pname, params )
@lazy( glDeleteQueries ) def glDeleteQueries( baseOperation, n, ids=None ): if ids is None: ids = arrays.GLuintArray.asArray( ids ) n = arrays.GLuintArray.arraySize( ids ) else: ids = arrays.GLuintArray.asArray( ids ) return baseOperation( n,ids ) @lazy( glGenQueries ) def glGenQueries( baseOperation, n, ids=None ): """Generate n queries, if ids is None, is allocated returns array of ids """ if ids is None: ids = arrays.GLuintArray.zeros( (n,)) else: ids = arrays.GLuintArray.asArray( ids ) baseOperation( n, ids ) return ids
for func in ( 'glGetQueryiv','glGetQueryObjectiv','glGetQueryObjectuiv', ): globals()[func] = wrapper.wrapper(globals()[func]).setOutput( "params", (1,) ) del func, glget
|