c# - 如何在不损坏视频内存的情况下创建 Texture2D?
问题描述
在 Monogame 中,我正在创建一个 2D 纹理,它是现有纹理的水平翻转,使用GetData
如下SetData
:
private static Texture2D Flip(Texture2D art)
{
Color[] oldData = new Color[art.Width * art.Height];
art.GetData(oldData);
Texture2D newTexture = new Texture2D(Root.Graphics.GraphicsDevice, art.Width, art.Height);
Color[] newData = new Color[art.Width * art.Height];
// Edit newData using oldData
newTexture.SetData(newData);
return newTexture;
}
这似乎在 Windows 上有效,但在 Android 上运行时,虽然翻转本身有效,但其他一些看似随机且不相关的纹理被破坏:它变成了几个纹理的混合物,并部分垂直翻转。
我怀疑我的调用以SetData
某种方式覆盖了另一个内存区域或其他东西。
如何在不发生这种损坏的情况下以编程方式创建新纹理?
解决方案
推荐阅读
- python - python将字符串列表转换为CSV
- react-native - 带有 react-native 的编程式屏幕触摸
- string - 如何将字符串转换为固定数量的字节?
- sql - 使用 max() 的 SQL 多个内部连接以获取最新记录的条目
- c# - 检查字符串是否包含有条件的单词
- excel - 对原始数据工作簿 vba 进行排序
- ansible - Ansible 只返回字典中的一项
- javascript - 带有正数和负数的 Javascript ParseInt
- c# - 更改子类中的私有变量
- asp.net-mvc - 仅在 SpecFlow 测试期间重定向时 TempData 为空