设备旋转后,LibGDX应用程序在iOS上呈现不正确
我有一个简单的GDX应用程序-除了游戏代码外,完全是样板:设备旋转后,LibGDX应用程序在iOS上呈现不正确,ios,libgdx,Ios,Libgdx,我有一个简单的GDX应用程序-除了游戏代码外,完全是样板: public class MyGdxGame extends ApplicationAdapter { int width = 0, height = 0; ShapeRenderer sr; @Override public void create() { super.create(); sr = new ShapeRenderer(); } @Ove
public class MyGdxGame extends ApplicationAdapter {
int width = 0, height = 0;
ShapeRenderer sr;
@Override
public void create() {
super.create();
sr = new ShapeRenderer();
}
@Override
public void resize(int width, int height) {
this.width = width;
this.height = height;
}
@Override
public void render () {
Gdx.gl.glClearColor(0.6f, 0.1f, 0.1f, 1f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
sr.begin(ShapeRenderer.ShapeType.Filled);
sr.setColor(Color.YELLOW);
sr.rect(width/4f, height/4f, width/2f, height/2f);
sr.end();
}
@Override
public void dispose () {
sr.dispose();
}
}
在安卓系统上,这一点与预期一样,当设备在横向和纵向之间旋转时,生成的图像保持不变
在iOS上,当应用程序启动时,显示是正确的,但如果随后将其旋转90度,则图像会被错误地重新绘制。下图显示了从纵向开始与从横向开始然后旋转到纵向之间的区别
在我看来,在iOS上的render()
函数中,GDX后端似乎不知道纵横比发生了变化,但我不知道如何解决这个问题,也不知道为什么它应该在一个平台上正常工作,而在另一个平台上却不能
我已经用GDX 1.9.5和1.10.0进行了测试,没有任何差异
resize()
函数更新为:glViewport
,而iOS后端则不会
public void resize(int width, int height) {
super.resize(width, height);
HdpiUtils.glViewport(0, 0, width, height);
this.width = width;
this.height = height;
}