假设我将vbo id存储在int中,我想调整该缓冲区的大小;我该怎么办?
第一选择:绑定缓冲区后使用glbufferdata
函数
第二个选择:.use gldeletebuffers
然后重新生成缓冲区并在绑定缓冲区后使用glbufferdata
函数。
所以我的问题是glbufferdata
是自己释放缓冲区还是没有?
答案 0 :(得分:1)
只需致电glBufferData
即可。 <{1}} / glDeleteBuffers
来电是不必要的。
以这种方式思考:glGenBuffers
创建一个新的缓冲区。 glBufferData
函数为缓冲区创建一个新的名称(整数)。
您不需要自己释放缓冲区...而不是OpenGL为您提供了一种方法。只要你没有持有对它的引用,你的OpenGL实现就会在你使用缓冲区中的数据完成后为你做。
答案 1 :(得分:1)
重新分配具有不同大小的缓冲区对象的存储是否合法的OpenGL?是。这是个好主意吗?好吧,考虑一下。
OpenGL有一种新的(ish)方法来为缓冲区分配存储空间:glBufferStorage
。它分配“不可变”存储。之所以这么称呼是因为,一旦分配,就不能重新分配它。
如果他们认为重新分配缓冲区对象的存储是一个好主意,那么OpenGL背后的人就不会添加这种不可变的缓冲区分配方法。