C#/ XNA - RenderTarget2D.GetData(),RenderTarget2D.SetData():每帧克隆纹理有效吗?

时间:2012-04-02 21:35:00

标签: c# xna textures texture2d rendertarget

所以,自上一个问题以来,我发现我的解决方案是复制纹理以防止引用问题。但是,我在质问:

    Color[] color = new Color[screen.Width * screen.Height];
    InputRenderTarget2D.GetData(Color);
    OutputRenderTarget2D.SetData(color);

首先,每秒跑60次这是否有效?虽然它设置了1个纹理,但我是性能偏执,并希望保持其体面或最佳性能。它会导致“主要明显的框架”等吗?

第二,它是否会提升性能,而不是创建一个新的Color数组,我回收一个?

1 个答案:

答案 0 :(得分:3)

我认为这会损害性能,因为GetData()/ SetData()调用会将rendertarget数据传输到主内存。 IMO,更好的选择是使用相同大小的四边形将InputRenderTarget2D渲染到OutputRenderTarget2D。这将阻止CPU-GPU数据传输。