关于URP渲染图中TextureHandle释放的困惑
关于Unity RenderGraph中TextureHandle的释放规范
核心区别在于纹理的创建来源,这也是文档和示例看起来矛盾的原因:
- 对于通过RenderGraph的
CreateTexture等API内部创建的TextureHandle:确实不需要手动释放,RenderGraph会自动跟踪纹理的引用关系,当没有Pass再引用该纹理时,会自动回收对应的GPU资源,这是文档描述的常规场景。 - 而官方示例中处理的是导入外部纹理(比如相机的渲染目标、外部加载的纹理资源)得到的
TextureHandle:这类纹理的原始资源所有权并不属于RenderGraph,RenderGraph只是临时持有句柄用于Pass中的操作。在ExecutePass末尾调用Release,是为了显式通知RenderGraph解除对该外部纹理的跟踪,避免RenderGraph的引用计数影响外部系统对纹理的管理,防止潜在的资源泄漏。
总结操作规范:
- 内部创建的
TextureHandle:依赖RenderGraph自动生命周期管理,无需手动Release。 - 导入外部纹理生成的
TextureHandle:在Pass执行完毕且不再使用该句柄时,调用Release解除关联。
内容的提问来源于stack exchange,提问作者Jesse
相关产品推荐
相关产品推荐

