Cómo especificar el desplazamiento del búfer con PyOpenGL

¿Cuál es el equivalente de PyOpenGL de

#define BUFFER_OFFSET(i) (reinterpret_cast(i)) glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, BUFFER_OFFSET(offset)) 

Si el desplazamiento es 0, entonces

 glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, None) 

funciona, pero no puedo averiguar cómo especificar un desplazamiento distinto de cero en un objeto de búfer.

Se supone que debes pasar un puntero void ctypes , que puede construirse mediante:

 ctypes.c_void_p(offset) 

Parece que hay una opción más específica de PyOpenGL utilizando una clase VBO , y conseguí algunas versiones de PyOpenGL de acuerdo con esto .

Puedes usar la clase OpenGL.arrays.vbo.VBO para eso:

 from OpenGL.arrays import vbo # data for your buffer buf = vbo.VBO( [ 1,2,3,4,5,...], target = GL_ELEMENT_ARRAY_BUFFER ) # calls glBindBuffer buf.bind() # starts reading at 14-th byte glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, buf + 14)