所以问题是我要写入缓冲区:
void* dst = glMapBufferRange(target, offset, size, GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_RANGE_BIT | GL_MAP_UNSYNCHRONIZED_BIT);
对于第一次调用确实有效,但不是第二次调用,我不确定为什么会出现这种情况。
出于可能的原因:
...我不确定如何验证/修复的唯一一个是“缓冲区对象已经处于映射状态”。这可能与我所看到的错误有关吗?
如果是这样的话,我会读到GL_MAP_PERSISTENT_BIT,但我们的目标是4.2,而glBufferStorage需要4.4,所以我不确定在那种情况下我还能如何解决这种情况。
不幸的是,我不能在不修改大量内容的情况下发布所有涉及的代码,但我的基本设置是为每个新创建的GL_ARRAY_BUFFER创建一个VAO,并且每当缓冲区被绑定时(没有VAO的代码) ),我改为绑定VAO。
绑定的VAO是我们称之为“滚动VBO”的缓冲区,因为它被用作所有文本和其他misc的一种捕获。渲染。也许是因为它被用于许多不同的事情......但我不确定如何确定它究竟是什么。
如果有任何代码或其他信息有用,请告诉我,我不确定这个问题究竟需要什么。非常感谢您的帮助!