首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时可以发布源PBO?

何时可以发布源PBO?
EN

Stack Overflow用户
提问于 2011-05-26 08:28:09
回答 1查看 573关注 0票数 4

我使用PBO在cpu和gpu之间异步移动数据。

当从图形处理器移动时,我知道我可以在PBO上调用glMapBuffer后删除源纹理。

然而,反过来呢?什么时候我知道从PBO到纹理的传输(glTexSubImage2D(...,NULL))已经完成,我可以安全地释放或重用PBO?是只要我绑定纹理还是别的什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-26 09:52:03

我认为在调用glTexImage之后,您可以安全地删除或重用缓冲区,而不会出现错误,因为驱动程序会为您处理所有事情,包括延迟销毁(这就是buffer对象的优点)。但这意味着,在前面的glTexImage复制完成之前,对glMapBuffer的调用可能会阻塞。如果您希望重用缓冲区并覆盖其整个内容,则通常做法是在调用glMapBuffer之前使用glBufferData重新定位它。这样,驱动程序知道您不再关心以前的内容,并可以分配一个新的缓冲区,您可以立即使用(包含以前的内容的内存将由驱动程序释放,当它确实不再使用时)。请记住,您的buffer对象只是一个内存句柄,驱动程序可以随心所欲地管理和复制。

编辑:这意味着在glGetTexImage返回后,你可以删除源纹理,因为驱动程序管理幕后的一切。是否使用buffer对象的决定不应对调用GL函数的顺序和时间有任何影响。请记住,调用glDelete...不会立即删除对象,它只是将此命令排入GL命令流中,即使这样,它也取决于驱动程序是否真正释放了任何内存。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6132510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档