Показать сообщение отдельно
Старый 19.03.2011, 06:47   #24
ІГРОГРАЙКО
ПроЭктировщик
 
Аватар для ІГРОГРАЙКО
 
Регистрация: 20.06.2009
Адрес: Україна
Сообщений: 152
Написано 10 полезных сообщений
(для 24 пользователей)
Ответ: Volume Rendering на XNA (Texture3D)

Я опять обращаюсь к вам за помощю!

У меня есть 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
Название: IMG_63.png
Просмотров: 1249

Размер: 11.6 КбНазвание: IMG_69.png
Просмотров: 1246

Размер: 10.8 КбНазвание: IMG_75.png
Просмотров: 1236

Размер: 9.7 Кб
mTextDataNY
Название: IMG1_33.png
Просмотров: 1365

Размер: 8.3 КбНазвание: IMG1_39.png
Просмотров: 1250

Размер: 9.9 КбНазвание: IMG1_45.png
Просмотров: 1273

Размер: 10.9 Кб
mTextDataNZ
Название: IMG0_37.png
Просмотров: 1254

Размер: 10.3 КбНазвание: IMG0_43.png
Просмотров: 1244

Размер: 11.2 КбНазвание: IMG0_49.png
Просмотров: 1245

Размер: 11.8 Кб
Как мне ети масивы цветных даных переобразовать в 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)
Нажмите на изображение для увеличения
Название: MAP.png
Просмотров: 1050
Размер:	131.4 Кб
ID:	13023
Как ето сделать коректно?

Помогите пожалуйста!
__________________
Blitz3D, XNA, WebGL, OpenGL, Unity3D
PC: ASUS A55VM Core i3 (2.4Ghz), 6 Gb RAM, Nvidia GF 630M GT 2Gb
(Offline)
 
Ответить с цитированием