Изменение размера и загрузка текстуры2d в XNA

я новичок в XNA на всякий случай. То, что я пытаюсь сделать, это загрузить текстуру в размере, отличном от его оригинала, или, по крайней мере, иметь возможность изменить его размер после. Я вижу в некоторых местах, которые я могу использовать:

Texture2D.FromStream(GraphicsDevice graphicsDevice, Stream stream, 
                 int width, int height, bool zoom)

Но я также читал, что загрузка текстур таким образом игнорирует ContentManager и усложняет работу сборщика мусора.

Как правильно загрузить изображение любого размера с помощью ContentManager? Если это невозможно, могу ли я пропорционально изменить его размер, например, с помощью масштабирования?

Контекст: я создаю доску из n x n миров. Когда n слишком велико, мне нужно, чтобы миры автоматически становились меньше.


person mjsr    schedule 03.12.2010    source источник
comment
Ответ Джо правильный. Кроме того: для сборщика мусора нет никакой разницы, используете ли вы ContentManager или нет. Это влияет только на то, как вы должны выгружать текстуры, если это требуется вашей игре (например, при переходе между уровнями). Взгляните на мой ответ здесь: stackoverflow.com/questions/4264995/.   -  person Andrew Russell    schedule 04.12.2010


Ответы (2)


Чтобы загрузить текстуру:

Texture2D tex = Content.Load<Texture2D>("somefile");

Чтобы изменить его размер, используйте одну из перегрузок SpriteBatch, которая принимает «масштаб» http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritebatch.draw.aspx

float scale = .5f; //50% smaller
SpriteBatch.Draw(tex, position, source, Color.White, rotation, scale, SpriteEffects.None, 0f);

Если вы новичок в XNA, я предлагаю вам прочитать это краткое руководство, а также ознакомьтесь с Каталогом образования на сайте create.msdn.com.

person Community    schedule 03.12.2010
comment
спасибо !, это работает именно так, как я хочу :) ... Теперь о вопросе, если использовать или нет методы, которые я упоминаю, что вы считаете безопасным, или его использование - это другое? - person mjsr; 03.12.2010

person    schedule
comment
Добро пожаловать в Stack Overflow! Ответы только на код не очень полезны. Пожалуйста, отредактируйте свой ответ, чтобы объяснить, почему ваш код решает исходную проблему. - person Joe C; 19.01.2017