打印 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))
我在不同时刻修改 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))