获取Buffer的大小

gar*_*ese 2 opengl

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

And*_*man 5

为此,您只需要glGetBufferParameteriv (...)使用适当的枚举进行调用.

在这种情况下,你希望缓存对象的大小,所以用GL_BUFFER_SIZEvalue.

您还没有提到什么样的作用缓冲对象服务(如什么是当前绑定到),但我会认为它是一个顶点缓冲区对象为简单起见,(所以targetIS GL_ARRAY_BUFFER).

因此我们有:

GLint size = 0;

glBindBuffer          (GL_ARRAY_BUFFER, buffer_obj);
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
Run Code Online (Sandbox Code Playgroud)

在GL 3.2之前,你被限制在4 GiB的大小,但我怀疑这真的很重要,因为你肯定会首先达到其他限制.Neverthless,glGetBufferParameteri64v (...)存在大于4 GiB的缓冲区.