【问题标题】:How to specify buffer offset with PyOpenGL如何使用 PyOpenGL 指定缓冲区偏移量
【发布时间】:2012-06-23 08:47:39
【问题描述】:

什么是 PyOpenGL 等价物

#define BUFFER_OFFSET(i) (reinterpret_cast<void*>(i))

glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, BUFFER_OFFSET(offset))

如果偏移量为0,那么

glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, None)

有效,但我不知道如何在缓冲区对象中指定非零偏移量。

【问题讨论】:

    标签: python opengl pyopengl vertex-buffer


    【解决方案1】:

    你应该传递一个ctypes void 指针,它可以通过:

    ctypes.c_void_p(offset)
    

    似乎有一个更具体的 PyOpenGL 选项使用 VBO 类,并且根据 this 使用某些版本的 PyOpenGL。

    【讨论】:

    • 这对于 glVertexAttribPointer 是一样的 - 对于任何试图让它工作的人。
    【解决方案2】:

    您可以为此使用OpenGL.arrays.vbo.VBO 类:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-19
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多