6

什么是 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)

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

4

2 回答 2

9

您应该传递一个ctypesvoid 指针,该指针可以通过以下方式构造:

ctypes.c_void_p(offset)

似乎有一个使用VBO类的更具体的 PyOpenGL 选项,并且根据this使用某些版本的 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 回答