在OpenGL中是否可能扩展缓冲区?
假设我想使用实例渲染。每次在世界中生成新对象时,我都需要用实例数据更新缓冲区。
在这种情况下,我有一个由3个浮点数组成的缓冲区。
std::vector<GLfloat> offsets = {0.0f,0.5f,1.0f};
auto offset_buffer = buffer::makeBuffer(BufferDraw::STATIC_DRAW, offsets);
如果我想要有四个元素,我需要调用glBufferData并增加大小吗?但旧数据会发生什么,会被复制吗?还是我需要完全删除缓冲区并创建一个新的缓冲区?
GL_ARB_sparse_buffer
。你可以预留一个比你需要的更大的缓冲区,然后在填充缓冲区时提交内存页面,但该扩展所需的最小页面大小为64 KiB,而float仅为4字节;) - Andon M. Coleman