在OpenGL

时间:2017-10-13 21:21:52

标签: c++ opengl buffer opengl-3 gpu-programming

假设我将vbo id存储在int中,我想调整该缓冲区的大小;我该怎么办? 第一选择:绑定缓冲区后使用glbufferdata函数 第二个选择:.use gldeletebuffers然后重新生成缓冲区并在绑定缓冲区后使用glbufferdata函数。

所以我的问题是glbufferdata是自己释放缓冲区还是没有?

2 个答案:

答案 0 :(得分:1)

只需致电glBufferData即可。 <{1}} / glDeleteBuffers来电是不必要的。

以这种方式思考:glGenBuffers创建一个新的缓冲区。 glBufferData函数为缓冲区创建一个新的名称(整数)。

您不需要自己释放缓冲区...而不是OpenGL为您提供了一种方法。只要你没有持有对它的引用,你的OpenGL实现就会在你使用缓冲区中的数据完成后为你做。

答案 1 :(得分:1)

重新分配具有不同大小的缓冲区对象的存储是否合法的OpenGL?是。这是个好主意吗?好吧,考虑一下。

OpenGL有一种新的(ish)方法来为缓冲区分配存储空间:glBufferStorage。它分配“不可变”存储。之所以这么称呼是因为,一旦分配,就不能重新分配它。

如果他们认为重新分配缓冲区对象的存储是一个好主意,那么OpenGL背后的人就不会添加这种不可变的缓冲区分配方法。