【发布时间】:2012-09-01 21:33:08
【问题描述】:
我可以很容易地想到在Texture2D 中更改单个像素会很有用的许多情况,尤其是因为在不断地每帧执行GetData<>(); SetData<>(); 或绘制到RenderTarget2D.
是否有任何真正的理由不为单个像素公开 setter 方法?如果没有,有没有办法不使用上述方法修改单个像素?
【问题讨论】:
-
如果纹理加载到 GPU 内存中会怎样?在这种情况下,它不能直接寻址,因此您必须将其加载到主内存中,对其进行修改,然后再将其加载回 GPU。
-
@EdS。有趣的是,我没有想到这一点。那么纹理存储在GPU内存中?我以为它都加载到了 RAM 中。
-
@EdS。你有这方面的参考吗?
-
您可以将
GetData和SetData与矩形区域一起使用,您可以将其设置为单个像素大小。是什么让您认为假设的GetPixel/SetPixel会更快? -
如果纹理存储在 RAM 中,与设置整个数组相比,在数组中设置单个索引会更快。我发现它们存储在 VRAM 中。
标签: c# graphics xna xna-4.0 texture2d