1

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

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

一方面,每秒运行 60 次是否有效?尽管它设置了 1 个纹理,但我对性能很偏执,并且希望将性能保持在其体面或最佳状态。它会导致“主要显着的丢帧”之类的吗?

其次,它会提高性能,而不是创建一个新的颜色数组,我回收一个?

4

1 回答 1

3

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

于 2012-04-02T21:40:56.187 回答