How to specify buffer offset with PyOpenGL

前端 未结 2 1523
無奈伤痛
無奈伤痛 2020-12-11 07:29

What is the PyOpenGL equivalent of

#define BUFFER_OFFSET(i) (reinterpret_cast(i))

glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, B         


        
相关标签:
2条回答
  • 2020-12-11 07:42

    You can use OpenGL.arrays.vbo.VBO class for that:

    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)
    
    0 讨论(0)
  • 2020-12-11 08:03

    You're supposed to pass a ctypes void pointer, which can constructed by :

    ctypes.c_void_p(offset)
    

    There seems to be a more PyOpenGL specific option using a VBO class, and gotcha with some versions of PyOpenGL according to this.

    0 讨论(0)
提交回复
热议问题