所以,自上一个问题以来,我发现我的解决方案是复制纹理以防止引用问题。但是,我在质问:
Color[] color = new Color[screen.Width * screen.Height];
InputRenderTarget2D.GetData(Color);
OutputRenderTarget2D.SetData(color);
首先,每秒跑60次这是否有效?虽然它设置了1个纹理,但我是性能偏执,并希望保持其体面或最佳性能。它会导致“主要明显的框架”等吗?
第二,它是否会提升性能,而不是创建一个新的Color数组,我回收一个?
答案 0 :(得分:3)
我认为这会损害性能,因为GetData()/ SetData()调用会将rendertarget数据传输到主内存。 IMO,更好的选择是使用相同大小的四边形将InputRenderTarget2D渲染到OutputRenderTarget2D。这将阻止CPU-GPU数据传输。