libgdx ios landscape不是全屏

时间:2015-04-17 07:19:44

标签: java ios libgdx robovm

我的应用有问题。在iPhone上(在5c,5s,6上测试)我两侧都有两条黑色条纹(在Android上看起来都很好看)。 我怎么能处理它们?

two black stripes on both sides

这是我的绘图代码

@Override
public void create () {

    mWidth = Gdx.graphics.getWidth();
    mHeight = Gdx.graphics.getHeight();
    mScale = Math.max(mWidth, mHeight) / 20f;

    backgroundTexture = new Texture(Gdx.files.internal("backBlue.png"));

    ShaderProgram.pedantic = false;

    backgroundShader = new ShaderProgram(VERT, FRAG);
    if (!backgroundShader.isCompiled()) {
        System.err.println(backgroundShader.getLog());
        System.exit(0);
    }
    if (backgroundShader.getLog().length()!=0)
        System.out.println(backgroundShader.getLog());

    backgroundBatch = new SpriteBatch(5, backgroundShader);
}


@Override
public void render () {
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    backgroundBatch.begin();
    backgroundBatch.draw(backgroundTexture, 0, 0, mWidth, mHeight);
    backgroundBatch.end();
    ...
}

@Override
public void resize (int width, int height) {
    mWidth = width;
    mHeight = height;
    mScale = Math.max(width, height) / 20f;

    backgroundShader.begin();
    backgroundShader.setUniformf("resolution", width, height);
    backgroundShader.end();
}

1 个答案:

答案 0 :(得分:0)

这可能是因为你正在使用viewport,这通常是在构造函数或create方法中设置的。

什么是viewport

基本上,viewport是一个对象,用于定义如何在不同屏幕上绘制游戏的策略。例如,假设您的相机设置为480 x 800(像素)。如果您的游戏在具有不同比率的屏幕上运行会发生什么情况,例如,iPhone 5的屏幕为1,136×640像素?比赛应该拉长吗?图像是否应该裁剪?或者libgdx是否应在两侧添加黑条以适合您使用的相机尺寸?此决定是由您的相机使用的viewport决定的。

简而言之。强烈建议您在wiki上阅读更多内容。

此外,可以找到关于此主题的优秀教程here