LibGDX显示模式下的奇怪屏幕大小

LibGDX显示模式下的奇怪屏幕大小,libgdx,box2d,Libgdx,Box2d,我目前在使用LibGDX和Box2d时遇到一些问题,可能是因为我的相机设置 在调查过程中,我发现: Gdx.graphics.getWidth() == 320 Gdx.graphics.getHeight() == 526 即使我将舞台和正交摄影机设置为1080/1920或270/480(我在玩数值) 然后我按照文档进行操作,看起来这个值与舞台无关,也与相机无关。在那之后,我检查了我只有一种显示模式可用: DisplayMode[] dms = Gdx.graphic

我目前在使用LibGDX和Box2d时遇到一些问题,可能是因为我的相机设置

在调查过程中,我发现:

    Gdx.graphics.getWidth() == 320
    Gdx.graphics.getHeight() == 526
即使我将舞台和正交摄影机设置为1080/1920或270/480(我在玩数值)

然后我按照文档进行操作,看起来这个值与舞台无关,也与相机无关。在那之后,我检查了我只有一种显示模式可用:

    DisplayMode[] dms = Gdx.graphics.getDisplayModes();
    for (int i = 0; i < dms.length; i++) {
        Log.d("myapp", "dms > " + dms[i].toString());
    }
因此,我对setDisplayMode的调用被忽略:

    Gdx.graphics.setDisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT, true);
它改变不了什么

我怀疑这可能是问题所在,但我如何才能改变它


编辑:我正在Nexus5中测试。

Gdx.graphics.getWidth()
Gdx.graphics.getHeight()
返回屏幕尺寸。在桌面上,它们是窗口的大小(您可以调整大小),但在Android上,您无法更改它们。您应该根据屏幕大小调整相机视口大小。

Gdx.graphics.getWidth()
Gdx.graphics.getHeight()
返回屏幕尺寸。在桌面上,它们是窗口的大小(您可以调整大小),但在Android上,您无法更改它们。您应该根据屏幕大小调整摄像头视口大小。

Gdx.graphics.getWidth()
Gdx.graphics.getHeight()
是android设备的屏幕尺寸/桌面的窗口大小。有一种方法可以设置视口,因此窗口的其余部分用黑色边框填充:
Gdx.gl.glViewport((int)startX,(int)startY,(int)width,(int)height)(来自)

“摄影机”视口是另一种情况。这就像物理大小和游戏大小的对话:如果将摄影机视口宽度设置为(例如)16,则游戏窗口将“划分”为16个部分。如果然后在
x=16
处绘制对象,则该对象位于窗口的右端。如果你在<代码> x=7.5 < /代码>上绘制它,它在中间(如果它的代码>大小=1 < /COD>,X POS是左侧)。所以你可以用你自己的单位(也许是米?)计算你的东西,然后libgdx将其放大以适应屏幕。 因此,如果在
1600*900
px屏幕上使用(
16/9
)的摄影机视口(保持简单)
1worldUnit
100px
。在
800*450
px屏幕上,它是
50px
。。。
我希望我能帮助您

Gdx.graphics.getWidth()
Gdx.graphics.getHeight()
是android设备的屏幕尺寸/桌面的窗口大小。有一种方法可以设置视口,因此窗口的其余部分用黑色边框填充:
Gdx.gl.glViewport((int)startX,(int)startY,(int)width,(int)height)(来自)

“摄影机”视口是另一种情况。这就像物理大小和游戏大小的对话:如果将摄影机视口宽度设置为(例如)16,则游戏窗口将“划分”为16个部分。如果然后在
x=16
处绘制对象,则该对象位于窗口的右端。如果你在<代码> x=7.5 < /代码>上绘制它,它在中间(如果它的代码>大小=1 < /COD>,X POS是左侧)。所以你可以用你自己的单位(也许是米?)计算你的东西,然后libgdx将其放大以适应屏幕。 因此,如果在
1600*900
px屏幕上使用(
16/9
)的摄影机视口(保持简单)
1worldUnit
100px
。在
800*450
px屏幕上,它是
50px
。。。
我希望我能帮上忙

其他人给出了有用的答案,但我必须告诉大家为什么LibGDX报告我的Nexus 5的屏幕大小不正确

我发现我们需要在AndroidManifest中设置目标SDK:

    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="18" />


将其设置为我的测试版本后,LibGDX报告了我设备的正确屏幕大小(1080x1776,可能是因为菜单占用了一些空间)。

其他人给出了有用的答案,但我必须告诉大家为什么LibGDX报告了Nexus 5的错误屏幕大小

我发现我们需要在AndroidManifest中设置目标SDK:

    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="18" />


将其设置为我的测试版本后,LibGDX会报告适合我的设备的屏幕大小(1080x1776,可能是因为菜单占用了一些空间)。

谢谢,我不明白为什么LibGDX会在我的Nexus5中报告320x526,因为它是1080x1920。它不是以像素为单位吗?谢谢,我只是不明白为什么LibGDX在我的Nexus5中报告320x526,因为它是1080x1920。它不是以像素为单位吗?