Search code examples
pythonopenglvbopyglet

how to delete VBO correctly in python?


I was wondering how to delete a vertex buffer object correctly in python. I generate my VBOs like this:

from ctypes import pointer
vbo_id = GLuint()
glGenBuffers(1, pointer(vbo_id))

From time to time I have to delete a VBO and create a new one instead. I was wondering what the correct way of deleting the VBO is? I've tried the following two ways but I don't know which one is correct (and python doesn't complain either way):

glDeleteBuffers(1, pointer(vbo_id))
or 
glDeleteBuffers(1, vbo_id)

Which call is correct? And does deleting the VBO also free the memory on the GPU?


Solution

  • I don't write Python, so take it with that grain of salt, but the specification for glDeleteBuffers() takes a number of buffers and an array of buffer names. So it should probably be pointer(vbo_id). In C, it's the same as glGenBuffers(), so I'd assume the same thing in Python. The reason being that the second parameter is an array of buffer names, not just a buffer name.