Libgdx使用具有高分辨率和低分辨率纹理的AssetManager

时间:2014-03-25 08:22:14

标签: java android textures libgdx android-assets

我在libgdx中使用AssetManager和Atlas文件来加载所有纹理。这工作得很好,但我想修改我必须使用不同纹理合并的代码。

例如,当完全缩小时,我不需要一个漂亮的高分辨率纹理。一个小的像素化点就足够了。放大时,我想使用正确的高分辨率纹理。

目前我有这个:

主要渲染()方法:

batch.draw(Assets.instance.ballsmall.ballsmall, this.x, this.y);

(你可以暂时忽略双ballsmall.ballsmall。这只是我的资产对象结构的一个较小的语义问题。)

AssetManager部分:

public class Assets implements Disposable {

private AssetManager _assetManager;
public BallSmall ballsmall;

public static final Assets instance = new Assets();
private Assets() {}

public void init(AssetManager assetManager)
{
    _assetManager = assetManager;
    _assetManager.load("output/Game.atlas", TextureAtlas.class);
    _assetManager.finishLoading();

    TextureAtlas atlas = _assetManager.get("output/Game.atlas");
    for (Texture t : atlas.getTextures())
    {
        t.setFilter(TextureFilter.Linear, TextureFilter.Linear);
    }

    ballsmall = new BallSmall(atlas);
}

@Override
public void dispose() {
    _assetManager.dispose();
}


public class BallSmall {
    public final AtlasRegion ballsmall;

    public BallSmall(TextureAtlas atlas) {
        ballsmall = atlas.findRegion("ballsmall");
    }
}   
}

我想让主render()方法保持简单,调用Assets.instance并可能将全局缩放级别作为参数传递。但是,AssetManager必须使用此缩放级别来确定要交换的纹理。非常感谢。

0 个答案:

没有答案