Показать сообщение отдельно
Старый 26.03.2011, 21:23   #2
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Слияние текстур XNA (Texture2D)

отрендерить все текстуру в одну.
создать RenderTarget2D, установить его на график девайс в качесте текущего таргета и отрисовать текстуры в нужных координатах и вуаля, у тебя ьбудет текстура - тот самый рендер таргет.
Вот пример на XNA 4.0
 public Texture2D RenderInOneTexture(Texture2D[] textures)
        {
        //расчитаем еужный размер конечной текстуры
            int allSize = 0;
            int maxW = 0;
            for (int i = 0; i < textures.Length; i++)
            {
                allSize += textures[i].Height;
                if(textures[i].Width>maxW)
                {
                    maxW = textures[i].Width;
                }
            }
            //создаём текстуру, куда будем рендерить( в XNA 3.1-3.0 нужно будет вернуть 
            //у таргета имеено текстуру, так как в XNA 4 сделали RenderTarget наследником Texture2D)
            RenderTarget2D resultTexture=new RenderTarget2D(GraphicsDevice,maxW,allSize);
            GraphicsDevice.SetRenderTarget(resultTexture);
            spriteBatch.Begin(SpriteSortMode.Immediate,BlendState.AlphaBlend);
            allSize = 0;
            for (int i = 0; i < textures.Length; i++)
            {
               spriteBatch.Draw(textures[i],new Vector2(0,allSize),Color.White);
                allSize += textures[i].Height;
            }
            spriteBatch.End();
            GraphicsDevice.SetRenderTarget(null);
            return resultTexture;
        }
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ІГРОГРАЙКО (26.03.2011)