Libgdx纹理大小,开发分辨率比我的笔记本电脑更大

时间:2016-10-02 22:53:17

标签: java android libgdx

我目前正在开发一个libgdx游戏,在我给它最后一步之前,我想真正听到有经验的用户的话,这已经困扰了我好几天了。  如果我想支持尽可能多的设备,基本上我将为最大可能的res设计图形,然后在需要时缩放,用于较小的屏幕,对吧?我如何开发出比我的笔记本电脑更大的分辨率(2015/16手机)。我的笔记本电脑的分辨率为1920x1080px,S7三星的分辨率为2k +宽。

谢谢!

3 个答案:

答案 0 :(得分:0)

我认为你要找的是Viewports。您必须决定哪种策略最符合您的需求。例如,FitViewport始终保持您定义的宽高比,这可能会导致某些设备出现黑条。

答案 1 :(得分:0)

当我亲自使用libgdx进行开发时,我会根据屏幕宽度和高度放置和调整所有对象的大小。这包括图像,字体,按钮等。这使我在所有设备上获得了非常一致的结果,因为现在大多数设备的比率为16:9或接近它。要开发大于屏幕尺寸的图像,仅使用photoshop创建指定尺寸的图像有什么问题?

答案 2 :(得分:0)

最好选择屏幕为1280,屏幕高度为800,并使用填充viewPort。因此,您几乎可以在所有屏幕上渲染游戏而不会出现拉伸问题。 Viewport是libgdx提供的解决此多屏兼容问题的方法。在这里,我将发布一些示例代码供您参考。

公共类myGame扩展了ApplicationAdapter {

public OrthographicCamera camera;
public Viewport viewPort;
private SpriteBatch batch;
private BitmapFont myScoreFont;
private Texture texture;

public myGAme() {

}

@Override
public void create() {
        myScoreFont = new BitmapFont(Gdx.files.internal(Constants.PATH_TO_MY_SCORE_FONT), true);
    batch = new SpriteBatch();
    float w = Gdx.graphics.getWidth();
    float h = Gdx.graphics.getHeight();
    texture = new Texture(Gdx.files.internal(Constants.PATH_TO_LEFT_BAR));

    camera = new OrthographicCamera();
    camera.position.set(0, 0, 0);
    camera.update();
    camera.setToOrtho(false, Constants.APP_WIDTH, Constants.APP_HEIGHT);

   // Here is the viewport is setting up with the camera and the screen size

    viewPort = new FillViewport(1280, 800, camera);



}

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



@Override
public void render() {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
    float deltaTime = Gdx.graphics.getDeltaTime();
    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    batch.draw(myScorefont,"Score",0,0);
    batch.end();

}

@Override
public void resize(int width, int height) {
// the game area will be resized as per the screen size of the device
    viewPort.update(width, height);
}

@Override
public void pause() {
}

@Override
public void resume() {
}

}