如何正确释放VT的PhysicalTexture

你好,我们是关卡制项目,只有部分关卡使用了RVT,在使用过程中发现从有RVT的关卡切换到无RVT的关卡后,​已分配在显存的PhysicalTexture是不会释放的。

想请问有没有手动的方式可以释放?​

Hi,

这个过程应该都是自动管理和释放的,如果是RVT的话,只要URuntimeVirtualTexture不被任何物体引用,在GC后,应该就会被Release,只是有可能贴图还在RenderTargetPool里。但理论上重新加载地图,应该也会自动FreeUnusedResources。

可以先确认一下URuntimeVirtualTexture是否被其他地方引用,如果没有引用,再看一下是否在Pool里没有被释放。

[Image Removed]目前发现VirtualTextureSystem::Update函数在这里就返回了,实际释放PhysicalSpaces的ReleasePendingSpaces函数是在Update函数结尾处,PhysicalSpaces处于无引用但永远不会被释放的状态。

[Image Removed]尝试在OnPostWorldCleanup回调中手动调用了PhysicalSpaces的Release函数,释放成功,不知这样处理有没有什么隐患?

另外还想确认下这个算是VT系统自动释放的bug吗?

的确有这个可能性,我反馈一下。我觉得你的改动应该没什么隐患。应该可以正常工作。

感谢~目前测试没遇到问题,我们就先这么改了👌 ​

好的,我已经把问题反馈给同事了,同事目前的想法是在early out前调用一下ReleasePendingSpaces。

收到,谢谢~