打印 VBO 的内容

Print the content of a VBO

我在不同时刻修改 OpenGL_accelerate.vbo.VBO 对象的位,我想打印该对象的实际全部内容(用于调试目的)。

一个简单的 print(my_vbo) 不起作用(它打印 <OpenGL_accelerate.vbo.VBO object at 0x0000019FA8370430>

是否有使用 PyOpenGL 获取它的简单方法(或者我必须维护数据的 numpy 副本)?

您需要创建一个 GLfloat 的数组,并使用 glGetBufferSubData 从 GPU 将缓冲区读回该数组。最后,您可以将数组打印为列表

glBindBuffer(GL_ARRAY_BUFFER, vbo)

no_of_floats = 12 # read 12 floats
float_array = (GLfloat * no_of_floats)()
glGetBufferSubData(GL_ARRAY_BUFFER, 0, no_of_floats * sizeof(GLfloat), float_array)
print(list(float_array))