获取Buffer的大小

时间:2014-02-27 18:25:18

标签: opengl

我想用glCopyBufferSubData将数据从一个缓冲区复制到另一个缓冲区。但是我不知道我要复制的缓冲区的大小。我如何获得尺寸?

1 个答案:

答案 0 :(得分:5)

为此,您只需使用相应的枚举来调用glGetBufferParameteriv (...)

在这种情况下,您需要缓冲区对象的大小,因此GL_BUFFER_SIZE使用value

你还没有提到缓冲区对象所服务的角色(例如它当前绑定的角色),但为了简单起见,我假设它是一个顶点缓冲区对象(所以target是{{1} })。

因此我们有:

GL_ARRAY_BUFFER

在GL 3.2之前,你被限制在4 GiB的大小,但我怀疑这真的很重要,因为你肯定会首先达到其他限制。但是,对于大于4 GiB的缓冲区,存在GLint size = 0; glBindBuffer (GL_ARRAY_BUFFER, buffer_obj); glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);