6

What is the PyOpenGL equivalent of

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

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

If the offset is 0, then

glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, None)

works, but I can not figure out how to specify a non-zero offset into a buffer object.

4

2 に答える 2

9

ctypes次のように構築できる void ポインタを渡すことになっています。

ctypes.c_void_p(offset)

クラスを使用した PyOpenGL 固有のオプションがさらにあるようで、これVBOによると PyOpenGL のいくつかのバージョンで問題が発生しました

于 2012-06-21T06:51:26.610 に答える
8

そのために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)
于 2012-06-21T06:51:00.977 に答える