孤儿:用NULL指针调用glBufferData,真的吗?

时间:2015-07-15 00:28:40

标签: opengl

来自OpenGL wiki:

  

如果要更新小部分,请使用glBufferSubData。如果要更新整个VBO,请使用glBufferData(据报道,此信息来自nVidia文档)。但是,另一种在更新整个缓冲区时可以正常工作的方法是使用NULL指针调用glBufferData,然后使用新内容调用glBufferSubData。指向glBufferData的NULL指针使驱动程序知道您不关心以前的内容,因此可以自由地替换完全不同的缓冲区,这有助于更有效地上传驱动程序管道。

我从研究中了解到,“帮助管道上传更有效”意味着什么呢?它允许异步缓冲区写入,这使得动态缓冲区更快。

然而,这段摘录和其他人似乎认为glBufferData的“NULL”参数非常重要,它是孤立的原因,也是促进异步写入的原因。

但是我的常识告诉我,它不需要为null,你可以在那里指向你的一些数据,而不是null。孤立的重要部分就是你再次调用glBufferData并因此重新分配缓冲区的存储,从而使旧存储孤立,从而允许异步写入。想到这个我是对的吗?

0 个答案:

没有答案