libGDX像素化渲染

时间:2015-09-29 12:52:51

标签: java android libgdx

我是lib GDX的初学者,我正在按照他们的一个教程来学习基础知识。

我有一组约400张图片,其中我创建了.png.atlas个文件。这些图像的分辨率为128 * 256

我有以下代码在Nexus 5设备上呈现它:

public class MyGdxGame implements ApplicationListener {
    private SpriteBatch batch;
    private TextureAtlas textureAtlas;
    private Sprite sprite;
    private int currentFrame = 1;
    private String currentAtlasKey = new String("0001");

    @Override
    public void create() {
        batch = new SpriteBatch();

        textureAtlas = new TextureAtlas(Gdx.files.internal("data/packOne.atlas"));
        TextureAtlas.AtlasRegion region = textureAtlas.findRegion("0001");
        sprite = new Sprite(region);



        sprite.setPosition(Gdx.graphics.getWidth() / 2 - sprite.getWidth() / 2, Gdx.graphics.getHeight() / 2 - sprite.getHeight() / 2);
      //  sprite.scale(2.5f);
        Timer.schedule(new Timer.Task() {
            @Override
            public void run() {
                currentFrame++;
                if (currentFrame > 393)
                    currentFrame = 1;

                // ATTENTION! String.format() doesnt work under GWT for god knows why...
                currentAtlasKey = String.format("%04d", currentFrame);
                sprite.setRegion(textureAtlas.findRegion(currentAtlasKey));
            }
        }
                , 0, 1 / 30.0f);
    }

    @Override
    public void dispose() {
        batch.dispose();
        textureAtlas.dispose();
    }

    @Override
    public void render() {
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        batch.begin();
        sprite.draw(batch);
        batch.end();
    }

    @Override
    public void resize(int width, int height) {
    }

    @Override
    public void pause() {
    }

    @Override
    public void resume() {
    }
}

当我使用sprite.scale(2.5f);时,图像被缩放但是像素化,当我不使用它时,图像看起来不像素化但是渲染得非常小。我希望这个序列是全屏的,没有像素化。我该如何改进呢?我是否应该选择512 * 1024等高分辨率图像。我希望它能在所有多种屏幕尺寸上正常运行。

0 个答案:

没有答案