我想将单个Texture2D拆分为大小为function init() {
var images = document.getElementsByTagName("img");
for (var i = 0; i < images.length; i++) {
images[i].onclick = showAnswer;
}
};
的Texture2D,并将它们放入2D数组中。原始Texture2D的大小始终是x
的倍数。最简单的方法是什么?
答案 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。
希望这有帮助!