2013-12-26 5 views
3

Я хочу использовать setFilter(TextureFilter.Linear, TextureFilter.Linear); на моем изображении, взятом из textureAtlas. когда я используюLibgdx текстура область текстуры

TextureRegion texReg = textureAtl.findRegion("myImage"); 
Sprite = new Sprite(texReg); 

это прекрасно работает, но если я попробовать

TextureRegion texReg = textureAtl.findRegion("myImage"); 
Texture myTexture = new Texture(texReg.getTexture()); 
myTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 
Sprite mySprite = new Sprite(myTexture); 

MySprite содержит все текстурный атлас изображений. Как установить однократное изображение текстуры из текстуры?

+0

Может быть, попробовать использовать '.setFilter' на все изображение, а затем загрузить конкретный один. – Israelg99

ответ

4

Ваша последняя строка должна быть:

Sprite mySprite = new Sprite(texReg); 

текстура может представлять собой одно изображение или несколько изображений (текстур атлас). Когда есть несколько изображений, каждый из них находится в области текстуры. Вы можете применять фильтрацию только ко всей текстуре и, следовательно, все изображения в ней. Если вы хотите применить его только к одному изображению, он должен быть в отдельной текстуре.

Так вот то, что вы делаете с вашим кодом:

// get the image for your game (or whatever) object 
TextureRegion texReg = textureAtl.findRegion("myImage"); 
// get the texture that is the 'container' of the image you want 
Texture myTexture = new Texture(texReg.getTexture()); 
// apply filtering to the entire texture and all the images 
myTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 
// set the entire texture as the image for your sprite (instead of only a single region) 
Sprite mySprite = new Sprite(myTexture); 
+0

не работает, масштабирование спрайт с артефактами –

+1

@AntonSobolev Вы имеете в виду, что это не работает для вас? Можете ли вы подробнее рассказать? – mrzli

Смежные вопросы