【发布时间】:2017-02-28 15:28:59
【问题描述】:
我在使用 texture.GetData 时遇到问题,这是 AccessViolationExcpetions 的原因。
我正在尝试执行以下操作:
Texture2D texture;
foreach (var mesh in model.Meshes)
foreach (BasicEffect effect in mesh.Effects)
texture = effect.Texture;
或
texture = ((BasicEffect)model.Meshes[0].Effects[0]).Texture;
然后:
Color[] data = new Color[texture.Width * texture.Height];
texture.GetData(data);
for (int i = 0; i < data.Length - 1; i++)
{
if (IsSimilar(data[i], new Color(58, 59, 248), 40, 40, 40))
data[i] = Color.Red;
}
texture.SetData(data);
foreach (var mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
effect.Texture = texture;
}
但是在 texture.GetData(data) 处它会引发 AccessViolationException,显然我不允许读取模型上的纹理?? 有人知道如何解决这个问题吗?
如果我只是尝试加载纹理,一切都很好,但因为我们正在处理许多不同的模型。找出模型需要哪种纹理,然后重新着色并应用它会很麻烦。
【问题讨论】:
标签: c# visual-studio xna monogame