이것은 간단한 질문 일 수도 있지만 어딘가에있을 수 있습니다. 찾을 수 없습니다. 누군가가 나를 올바른 길로 인도 할 수 있기를 바랍니다. 내 응용 프로그램의 디자인 해상도는 800x480입니다. 더 높은 해상도의 기기에서 정확한 가로 세로 비율을 유지하기 위해 나는 this post을 따라 갔고 더 큰 화면 (넥서스 7)에서 양쪽에 "검정색 막대"(테스트를 위해 파란색을 사용함)를 얻을 수있었습니다. 그러나 무대는 화면을 덮기 위해 확장되지 않는 것으로 보입니다. 아래 화면을 보시고 파란색은 Gdx.gl.glClearColor (0.5f, 1, 1, 1); 검정 사각형 (800x480)이 실제 Sprite입니다. 내가 잘못 어디로 갔는지Libgdx Scaling에 대한 조언이 필요합니다.
나는 확실하지 않다. 어떤 도움이라도 대단히 감사합니다. 아래 코드 :
private SpriteBatch batch;
private Texture splashTexture;
private Sprite splashSp;
TextureRegion splashTr;
Stage stage;
@Override
public void create() {
stage = new Stage();
batch = new SpriteBatch();
splashTexture = new Texture(Gdx.files.internal("img/splashTexture.png"));
splashTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
TextureRegion splashTr = new TextureRegion(splashTexture, 0, 0, 800, 480);
splashSp = new Sprite(splashTr);
Gdx.app.log("myapp", "Creating game");
}
@Override
public void render() {
Gdx.gl.glClearColor(0.5f, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
stage.draw();
batch.begin();
batch.draw(splashSp, 0, 0);
batch.end();
}
@Override
public void resize(int width, int height) {
Gdx.app.log("myapp", "width:" + width + " height:" + height);
Vector2 size = Scaling.fit.apply(800, 480, width, height);
int viewportX = (int)(width - size.x)/2;
int viewportY = (int)(height - size.y)/2;
int viewportWidth = (int)size.x;
int viewportHeight = (int)size.y;
Gdx.app.log("myapp", "viewportWidth:" + viewportWidth + " viewportHeight:" + viewportHeight);
Gdx.app.log("myapp", "viewportX:" + viewportX + " viewportY:" + viewportY);
Gdx.gl.glViewport(viewportX, viewportY, viewportWidth, viewportHeight);
stage.setViewport(800, 480, true);
Gdx.app.log("myapp", "Resizing game");
}
귀하의 '스테이지 (Stage) '는 스프라이트의 렌더링과 완전히 독립적이며 실제로 여기서는 아무 것도하지 않습니다. 'Sprite'를'Stage'에'Actor'로 추가하거나'Stage'를 제거하고 뷰포트에'Camera'를 사용하고'SpriteBatch.setProjectionMatrix (camera.combined) '를 사용하십시오. – noone