首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >针对libgdx游戏的Android全屏分辨率

针对libgdx游戏的Android全屏分辨率
EN

Stack Overflow用户
提问于 2012-03-28 07:46:16
回答 1查看 11.2K关注 0票数 6

我想知道是否有一种方法可以用libgdx制作Android游戏,使它们都共享480x800的分辨率。使用Gdx.graphics.setDisplayMode(480,800,true)似乎不会改变任何事情。创建一个480x800的OrthographicCamera,这样游戏就是480x800,但不会像我预期的那样放大全屏并占据整个屏幕。当我在我的手机上测试它时,当游戏的分辨率是480x800的时候,手机只是用空白填满了屏幕的其余部分。这是我正在使用的代码。

代码语言:javascript
运行
复制
public class GameScreen implements Screen {

private Game game;
private OrthographicCamera guiCam;
private SpriteBatch batch;
private Texture texture;
private Rectangle glViewport;

public GameScreen (Game game)
{
        this.game = game;
        guiCam = new OrthographicCamera(GAME_WIDTH, GAME_HEIGHT);
        guiCam.position.set(GAME_WIDTH / 2, GAME_HEIGHT / 2, 0);
        batch = new SpriteBatch();
        texture = new Texture(Gdx.files.internal("data/c2.png"));
        glViewport = new Rectangle(0, 0, GAME_WIDTH, GAME_HEIGHT);
}

@Override
public void render(float delta) {
    if (Gdx.input.justTouched()) {
          texture = new Texture(Gdx.files.internal("data/c1.png"));
    }
    GL10 gl = Gdx.graphics.getGL10();
    gl.glClearColor(1, 0, 0, 1);
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    gl.glViewport((int) glViewport.x, (int) glViewport.y,
            (int) glViewport.width, (int) glViewport.height);

    guiCam.update();
    guiCam.apply(gl);
    batch.setProjectionMatrix(guiCam.combined);
    batch.begin();
    batch.draw(texture, 0, 0, 0, 0, 142, 192);
    batch.end();
}

private static final int GAME_WIDTH = 480;
private static final int GAME_HEIGHT = 800;
}

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-29 00:31:08

您已经将glViewport设置为480x800,这意味着您正在向手机硬件请求一个480x800的窗口来进行绘图。因为大多数(所有?)手机硬件不做屏幕缩放(就像你的台式机显示器那样),它们只在屏幕上给你一个480x800的区域。

你需要让OpenGL“缩放”你的屏幕,你可以通过将glViewport()设置为你设备的物理分辨率来做到这一点(模宽高比警告!)你应该让相机保持你喜欢的“虚拟”分辨率(在这种情况下是480x800 )。现在OpenGL会将你所有的图元放大到屏幕的分辨率。

作为一个快速测试,请尝试以下内容:

代码语言:javascript
运行
复制
gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

下一个问题是,如果硬件宽高比与你的“虚拟”宽高比不匹配。在这种情况下,你需要决定是拉伸,把黑条留在一边,还是改变你的虚拟纵横比。有关相机/视口设置的更多详细信息,以及宽高比问题的一些解决方案,请参阅此博客文章:http://blog.acamara.es/2012/02/05/keep-screen-aspect-ratio-with-different-resolutions-using-libgdx/

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9899301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档