将Texture2D拆分为二维数组

时间:2016-03-12 20:04:37

标签: c# xna monogame

我想将单个Texture2D拆分为大小为function init() { var images = document.getElementsByTagName("img"); for (var i = 0; i < images.length; i++) { images[i].onclick = showAnswer; } }; 的Texture2D,并将它们放入2D数组中。原始Texture2D的大小始终是x的倍数。最简单的方法是什么?

1 个答案:

答案 0 :(得分:0)

你可以用矩形来做到这一点.. 通过带有2个语句的纹理(一个用于x坐标,一个用于y坐标)和制作矩形,然后获取矩形的颜色数据并使用它创建一个新纹理。

texture =你的源纹理

newTexture =要放入数组的纹理的新部分

示例:

for (int x = 0; x < texture.Width; x += texture.Width / nrPieces)
{
    for (int y = 0; y < texture.Height; y += texture.Height / nrPieces)
    {
        Rectangle sourceRectangle = new Rectangle(x, y, texture.Width / _nrParticles, texture.Height / _nrParticles);
        Texture2D newTexture = new Texture2D(GameServices.GetService<GraphicsDevice>(), sourceRectangle.Width, sourceRectangle.Height);
        Color[] data = new Color[sourceRectangle.Width * sourceRectangle.Height];
        texture.GetData(0, sourceRectangle, data, 0, data.Length);
        newTexture.SetData(data);
// TODO put new texture into an array
        }
    }

所以你需要做的就是将新纹理放入数组中,无论你想要什么。 如果你只想在X轴上拆分,只需删除一个for语句并将sourceRectangle的高度更改为texture.Height。

希望这有帮助!