首页 > 解决方案 > 如何在不损坏视频内存的情况下创建 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某种方式覆盖了另一个内存区域或其他东西。

如何在不发生这种损坏的情况下以编程方式创建新纹理?

标签: c#graphicsmonogame

解决方案


推荐阅读