我目前正在研究一个精灵渲染器,它的数据每次滴答都会改变,所以我一直在寻找流式传输缓冲区对象的方法,我遇到了缓冲区孤儿......这让我有点困惑。
- 首先,当您使用 NULL 指针调用 glBufferData 时,是否分配了新内存,因此缓冲区大小是否发生变化是否重要?
- 其次,您是否需要在每次更新缓冲区时调用 glMap/glUnmap 或单个 glMap 工作?GL_INVALIDATE_BUFFER 是否与仅将数据设置为 NULL 相同?
最后,我在下面的实现中遗漏了什么吗?
每个刻度:
glBindBuffer(GL_ARRAY_BUFFER, ssb->buffers[1]); glBufferData(GL_ARRAY_BUFFER, length, NULL, GL_STREAM_DRAW); void* buffer = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); memcpy(buffer, data, length); glUnmapBuffer(GL_ARRAY_BUFFER);