Я опять обращаюсь к вам за помощю!
У меня есть 3 масива цветных даных с RAW файла:
private Color[] mTextDataNX;
private Color[] mTextDataNY;
private Color[] mTextDataNZ;
Массив текстур:
private Texture2D[] mTexture;
mTexture = new Texture2D[fDepth];
for (int i = 0; i < fDepth; i++)
{
mTexture[i] = new Texture2D(Game.GraphicsDevice, fWidth, fHeight, 0, TextureUsage.None, SurfaceFormat.Color);
}
После заполнения масива текстур масивом цветных данных и сохранения их в файлы:
int wd = mTexture[0].Width;
int hg = mTexture[0].Height;
for (int i = 0; i < fHeight; i++)
{
int start = i * (wd * hg);
mTexture[i].SetData<Color>(mTextDataN*, start, wd * hg, SetDataOptions.None);
mTexture[i].Save("IMG_" + i + ".tga", ImageFileFormat.Tga);
}
Я получаю текстуры соотвецтвенных слоев:
mTextDataNX
mTextDataNY
mTextDataNZ
Как мне ети масивы цветных даных переобразовать в 3 большых текстуры? (атласы или как их там...)
Я пробовал:
private Texture2D nTexture;
int source = fWidth * fHeight * fDepth;
int maxHeight = GraphicsDevice.GraphicsDeviceCapabilities.MaxTextureHeight;
int maxWidth = GraphicsDevice.GraphicsDeviceCapabilities.MaxTextureWidth;
for (mHeight = 2; mHeight < maxHeight; mHeight *= 2)
{
mWidth = source / mHeight;
if (mWidth <= maxWidth)
break;
}
nTexture = new Texture2D(Game.GraphicsDevice, mWidth, mHeight, 0, TextureUsage.None, SurfaceFormat.Color);
int wd = nTexture.Width;
int hg = nTexture.Height;
nTexture.SetData<Color>(mTextDataNX, 0, hg * wd, SetDataOptions.None);
nTexture.Save("MAP.tga", ImageFileFormat.Tga);
Но уменя получаетса вот такая фигня:
(оригинал 4096 х 512)
Как ето сделать коректно?
Помогите пожалуйста!