Unity Shader——GrabPass vs RenderTexture+Camera
GrabPass | RenderTexture + Camera | |
---|---|---|
实现难度 | 简单(只需要在Shader中加上一个抓取屏幕的GrabPass {"TextureName"}) | 较GrabPass复杂一些(其实也不复杂就是了) |
性能 | 因为抓取屏幕使用的分辨率和显示屏幕是一致的,所以对带宽影响大。而且在移动设备上,GrabPass虽然不会重新渲染场景,但它往往需要CPU直接读取后备缓冲(back buffer)中的数据,破坏了CPU和GPU之间的并行性,这是比较耗时的,甚至在一些移动设备上这是不支持的。 |
可以自定义渲染纹理的大小,尽管这种方法需要把部分场景再次渲染一遍,但我们可以通过调整摄像机的渲染层来减少二次渲染时的场景大小,或使用其他方法来控制摄像机是否需要开启。所以效率较好。 |