Разработать:
У меня есть набор плиток с 4 плитками [32 х 32]. Для примера давайте назовем их Грязь, Трава, Асфальт, Цемент.
Я хочу нарисовать относительно длинную поверхность Грасса [96 х 32]. Есть ли способ использовать механизм листов XNA (LinearWarp) для их рисования с помощью одного вызова Draw ()?
Я пытался:
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearWrap,null,null);
GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
spriteBatch.Draw(_tileSetTexture /* 64 x 64 */, destRectangle/* 96 x 32*/, TileFrame /*32 x 32*/, Color.White, 0f , Vector2.Zero ,SpriteEffects.None, 0f);
Я знаю, что есть возможность обрезать каждую плитку в отдельную Texture2D, а затем использовать «расширение» исходного прямоугольника для заполнения XNA LinearWrap, но мне нужно, чтобы они все были в одном большом изображении TileSet, и выполнить это настолько просто, насколько это возможно.