因此,从上一个问题开始,我发现我的解决方案是复制纹理以防止引用问题。然而,我在质疑:
Color[] color = new Color[screen.Width * screen.Height];
InputRenderTarget2D.GetData(Color);
OutputRenderTarget2D.SetData(color);首先,当每秒运行60次时,这是否有效?虽然它设置了1个纹理,但我是性能偏执狂,希望保持良好或最佳的性能。它会导致“主要明显的帧下降”之类的事情吗?
其次,如果不创建新的颜色数组,而是回收一个颜色数组,是否会提高性能?
发布于 2012-04-03 05:40:56
我认为这会损害性能,因为GetData()/SetData()调用会将rendertarget数据传输到主存。更好的替代方法是使用相同大小的四边形将InputRenderTarget2D渲染为OutputRenderTarget2D。这将阻止CPU-GPU数据传输。
https://stackoverflow.com/questions/9984181
复制相似问题