home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Multimedia / k3d-setup-0.7.11.0.exe / lib / site-packages / OpenGL / GL / VERSION / GL_1_5.py < prev    next >
Encoding:
Python Source  |  2008-12-07  |  2.3 KB  |  84 lines

  1. '''OpenGL extension VERSION.GL_1_5
  2.  
  3. This module customises the behaviour of the 
  4. OpenGL.raw.GL.VERSION.GL_1_5 to provide a more 
  5. Python-friendly API
  6. '''
  7. from OpenGL import platform, constants, constant, arrays
  8. from OpenGL import extensions, wrapper
  9. from OpenGL.GL import glget
  10. import ctypes
  11. from OpenGL.raw.GL.VERSION.GL_1_5 import *
  12. ### END AUTOGENERATED SECTION
  13. from OpenGL.lazywrapper import lazy
  14.  
  15. glDeleteBuffers = arrays.setInputArraySizeType(
  16.     glDeleteBuffers,
  17.     None,
  18.     arrays.GLuintArray,
  19.     'buffers',
  20. )
  21.  
  22. glGenBuffers = wrapper.wrapper( glGenBuffers ).setOutput(
  23.     'buffers', lambda n: (n,), 'n',
  24. )
  25.  
  26. def _sizeOfArrayInput( pyArgs, index, wrapper ):
  27.     return (
  28.         arrays.ArrayDatatype.arrayByteCount( pyArgs[index] )
  29.     )
  30.  
  31. glBufferData = wrapper.wrapper( glBufferData ).setPyConverter(
  32.     'data', arrays.asVoidArray(),
  33. ).setPyConverter( 'size' ).setCResolver( 
  34.     'data', arrays.ArrayDatatype.voidDataPointer ,
  35. ).setCConverter(
  36.     'size', _sizeOfArrayInput,
  37. ).setReturnValues( 
  38.     wrapper.returnPyArgument( 'data' ) 
  39. )
  40.  
  41. glBufferSubData = wrapper.wrapper( glBufferSubData ).setPyConverter(
  42.     'data', arrays.asVoidArray(),
  43. ).setPyConverter( 'size' ).setCResolver( 
  44.     'data', arrays.ArrayDatatype.voidDataPointer ,
  45. ).setCConverter(
  46.     'size', _sizeOfArrayInput,
  47. ).setReturnValues( 
  48.     wrapper.returnPyArgument( 'data' ) 
  49. )
  50.  
  51. glGetBufferParameteriv = wrapper.wrapper(glGetBufferParameteriv).setOutput(
  52.     "params",(1,),
  53. )
  54. @lazy( glGetBufferPointerv )
  55. def glGetBufferPointerv( baseOperation, target, pname, params=None ):
  56.     """Retrieve a ctypes pointer to buffer's data"""
  57.     if params is None:
  58.         size = glGetBufferParameteriv( target, GL_BUFFER_SIZE )
  59.         data = arrays.ArrayDatatype.zeros( (size,), GL_UNSIGNED_BYTE )
  60.         result = baseOperation( target, pname, ctypes.byref( data ) )
  61.         return data
  62.     else:
  63.         return baseOperation( target, pname, params )
  64.  
  65. for func in ('glGenQueries','glDeleteQueries'):
  66.     globals()[func] = wrapper.wrapper( 
  67.         globals()[func],
  68.     ).setPyConverter('n').setCConverter(
  69.         'n', arrays.AsArrayTypedSize( 'ids', arrays.GLuintArray ),
  70.     ).setCConverter(
  71.         'ids', arrays.asArrayType(arrays.GLuintArray),
  72.     ).setReturnValues(
  73.         wrapper.returnPyArgument( 'ids' )
  74.     )
  75.  
  76. for func in (
  77.     'glGetQueryiv','glGetQueryObjectiv','glGetQueryObjectuiv',
  78. ):
  79.     globals()[func] = wrapper.wrapper(globals()[func]).setOutput(
  80.         "params", (1,)
  81.     )
  82. del func, glget
  83.  
  84.