如何清除一个Rendertexture的内容?

我想在运行时清除RenderTexture的内容。

基本上我有这个脚本:

void OnRenderImage(RenderTexture source, RenderTexture destination) { RenderTexture TempRT = new RenderTexture(cam.pixelWidth, cam.pixelHeight, 24); RenderTexture whiteRT = new RenderTexture(TempRT.width, TempRT.height, TempRT.depth); Graphics.Blit(source, whiteRT, WhiteColorisation); if (Gauss) { Graphics.Blit(whiteRT, TempRT, PostOutline); Graphics.Blit(TempRT, destination, GaussianBlur); } else { Graphics.Blit(whiteRT, destination, PostOutline); } } 

这里的问题是:新创建的Rendertextures的内存不再被释放。

所以我改变了它:

 void OnRenderImage(RenderTexture source, RenderTexture destination) { RenderTexture _tempRT = RenderTexture.GetTemporary(cam.pixelWidth, cam.pixelHeight); RenderTexture _whiteRT = RenderTexture.GetTemporary(cam.pixelWidth, cam.pixelHeight); Graphics.Blit(source, _whiteRT, WhiteColorisation); if (Gauss) { Graphics.Blit(_whiteRT, _tempRT, PostOutline); Graphics.Blit(_tempRT, destination, GaussianBlur); } else { Graphics.Blit(_whiteRT, destination, PostOutline); } RenderTexture.ReleaseTemporary(_whiteRT); RenderTexture.ReleaseTemporary(_tempRT); } 

现在我不再得到“新”Rendertextures,但使用了。 它只是在现有的纹理上画一些东西,而不是在一个新的“白色”页面上绘制。

我唯一想要的就是……“_whiteRT”和“_tempRT”是“新”的,而且是免费的。

明显的解决scheme不起作用:

 void OnRenderImage(RenderTexture source, RenderTexture destination) { RenderTexture tempRT = new RenderTexture(cam.pixelWidth, cam.pixelHeight, 16); RenderTexture whiteRT = new RenderTexture(cam.pixelWidth, cam.pixelHeight, 16); Graphics.Blit(source, whiteRT, WhiteColorisation); if (Gauss) { Graphics.Blit(whiteRT, tempRT, PostOutline); Graphics.Blit(tempRT, destination, GaussianBlur); } else { Graphics.Blit(whiteRT, destination, PostOutline); } tempRT.Release(); whiteRT.Release(); } 

如果我使用上面的代码,在剖析器中,我的对象数量会上升和下降(直到我崩溃) 在这里输入图像说明

我怎么解决这个问题?