如何指定缓冲区PyOpenGL偏移(How to specify buffer offset wit

2019-06-25 16:02发布

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

工作,但我无法弄清楚如何指定一个非零偏移到缓冲区对象。

Answer 1:

你应该通过一个ctypes空指针,这可以通过构造:

ctypes.c_void_p(offset)

似乎是使用了更具体的PyOpenGL选项VBO类,以及根据PyOpenGL的一些版本的疑难杂症此 。



Answer 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)


文章来源: How to specify buffer offset with PyOpenGL