Я хотел бы разделить один Texture2D на Texture2D размером x
и поместить их в 2D-массив. Размер оригинального Texture2D всегда будет кратным x
. Каков самый простой способ сделать это?Разбиение Texture2D на двумерный массив
0
A
ответ
0
Вы можете сделать это с помощью Rectangles .. Пойдите через текстуру с помощью двух инструкций (один для координаты x, один для координаты y) и создайте прямоугольники, затем получите данные о цвете для прямоугольника и создайте с ним новую текстуру ,
текстуры = ваш источник текстуры
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, просто удалите ее для инструкции и измените высоту исходного прямоугольника на texture.Height.
Надеюсь, это поможет!
Смежные вопросы
- 1. Разбиение списка на двумерный список
- 2. указатель на двумерный массив
- 3. Указатель на двумерный массив
- 4. Двумерный массив
- 5. Двумерный массив
- 6. C указатель на двумерный массив
- 7. Разделить строку на двумерный массив
- 8. Как ссылаться на двумерный массив?
- 9. Разбиение интергера на массив
- 10. Разбиение строки на массив
- 11. Разбиение на 2D-массив
- 12. Указатель на двумерный динамический указатель на массив
- 13. Python - уменьшить, двумерный массив
- 14. XNA - Преобразование Texture2D [,] в Texture2D
- 15. Двумерный массив (умножение/деление)
- 16. двумерный массив: C Программирование
- 17. Calloc двумерный массив
- 18. Петля через двумерный массив
- 19. Swift Сортировка двумерный массив
- 20. Отправьте фоновый двумерный массив
- 21. Fortran фильтр двумерный массив
- 22. Двумерный массив в Twig
- 23. Двумерный массив указателей
- 24. JavaScript: Сдвинуть массив двумерный
- 25. Выходной двумерный массив
- 26. двумерный массив с Руби
- 27. Заполните двумерный ассоциативный массив
- 28. Разбиение текста на 2d-массив
- 29. инициализировать двумерный массив
- 30. Двумерный массив C
Создайте новый 'Texture2D's size X и используйте« RenderTarget », чтобы нарисовать правильную часть« основной »текстуры для новых текстур. Вы должны убедиться, что X имеет мощность 2 для максимальной совместимости и эффективности памяти. –
Почему вы хотите это сделать? Вы просто пытаетесь сделать часть текстуры или вам действительно нужно иметь 2 разных текстуры в памяти? – craftworkgames
См. [XNA Почему Texture.GetData одномерная?] (Http://gamedev.stackexchange.com/questions/46775/xna-why-is-texture-getdata-one-dimensional) – LibertyLocked