尽管OpenGL的glBufferData
Function中的用法标记仅作为提示而不是实际限制,但文档说“ DRAW”用于“用户写入它,然后使用它作为参数传递给其他OpenGL函数”。“ READ”是“此缓冲区将填充来自GL的数据,用户希望从中读取数据。” 但是,如果我想作为一种假设用法,将GPU用作外部存储并简单地在同一缓冲区中写入和读取(可能在GL进行更改之后),该怎么办?
这些常量的位值并不意味着我可以将它们组合在一起(例如GL_DYNAMIC_READ | GL_DYNAMIC_DRAW
)。
我是否可以使用任何“最佳”使用标志来提示GL,例如“我想将该缓冲区用作读取和写入的存储”?
如果我想作为假设的用法,将GPU用作外部存储并简单地在同一缓冲区中写入和读取(可能在GL进行更改之后),该怎么办?
然后,要么停止关心使用提示,要么不使用OpenGL。存在OpenGL的缓冲区对象是为了使用OpenGL。它们不存在,因此您无法访问要使用的新内存池。
尤其是因为“内存池*可能是与其他malloc
人分配的相同的内存池。而且您在OpenGL中无法做任何事情来确保缓冲区对象的存储来自GPU内存(甚至无法检查GPU是否有专用内存)。
简而言之,这不是OpenGL支持的使用模式,因此它并不是很好地支持它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句