OpenGL缓冲区用于读取和写入

萨尔贝拉

尽管OpenGL的glBufferDataFunction中的用法标记仅作为提示而不是实际限制,但文档说“ DRAW”用于“用户写入它,然后使用它作为参数传递给其他OpenGL函数”。“ READ”是“此缓冲区将填充来自GL的数据,用户希望从中读取数据。” 但是,如果我想作为一种假设用法,将GPU用作外部存储并简单地在同一缓冲区中写入和读取(可能在GL进行更改之后),该怎么办?

这些常量的位值并不意味着我可以将它们组合在一起(例如GL_DYNAMIC_READ | GL_DYNAMIC_DRAW)。

我是否可以使用任何“最佳”使用标志来提示GL,例如“我想将该缓冲区用作读取和写入的存储”?

尼科尔·波拉斯(Nicol Bolas)

如果我想作为假设的用法,将GPU用作外部存储并简单地在同一缓冲区中写入和读取(可能在GL进行更改之后),该怎么办?

然后,要么停止关心使用提示,要么不使用OpenGL。存在OpenGL的缓冲区对象是为了使用OpenGL。它们不存在,因此您无法访问要使用的新内存池。

尤其是因为“内存池*可能是与其他malloc人分配的相同的内存池。而且您在OpenGL中无法做任何事情来确保缓冲区对象的存储来自GPU内存(甚至无法检查GPU是否有专用内存)。

简而言之,这不是OpenGL支持的使用模式,因此它并不是很好地支持它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章