我想用glCopyBufferSubData将数据从一个缓冲区复制到另一个缓冲区。但是我不知道我要复制的缓冲区的大小。我如何获得尺寸?
答案 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);
。