2013-10-14 2 views
1

이것은 간단한 질문 일 수도 있지만 어딘가에있을 수 있습니다. 찾을 수 없습니다. 누군가가 나를 올바른 길로 인도 할 수 있기를 바랍니다. 내 응용 프로그램의 디자인 해상도는 800x480입니다. 더 높은 해상도의 기기에서 정확한 가로 세로 비율을 유지하기 위해 나는 this post을 따라 갔고 더 큰 화면 (넥서스 7)에서 양쪽에 "검정색 막대"(테스트를 위해 파란색을 사용함)를 얻을 수있었습니다. 그러나 무대는 화면을 덮기 위해 확장되지 않는 것으로 보입니다. 아래 화면을 보시고 파란색은 Gdx.gl.glClearColor (0.5f, 1, 1, 1); 검정 사각형 (800x480)이 실제 Sprite입니다. 내가 잘못 어디로 갔는지Libgdx Scaling에 대한 조언이 필요합니다.

Link to image

나는 확실하지 않다. 어떤 도움이라도 대단히 감사합니다. 아래 코드 :

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"); 
} 
+1

귀하의 '스테이지 (Stage) '는 스프라이트의 렌더링과 완전히 독립적이며 실제로 여기서는 아무 것도하지 않습니다. 'Sprite'를'Stage'에'Actor'로 추가하거나'Stage'를 제거하고 뷰포트에'Camera'를 사용하고'SpriteBatch.setProjectionMatrix (camera.combined) '를 사용하십시오. – noone

답변

1

카메라와 무대를 설정해야합니다.

먼저이

camera = new OrthographicCamera(); 
camera.setToOrtho(false, 800, 480); 
camera.update(); 

mystage = new Stage(800, 480, false); 

과에서이 방법은

camera.update(); 

가 MEE에 대한 괜찮 았는데 카메라를 업데이트 렌더링 않는 다음의 방법을 만들이

OrthographicCamera camera; 

처럼 카메라의 변수를 선언 ..

+0

감사합니다. Sandeep. 이전에 제안한 방법을 시도했지만 행운은 없습니다. 그러나, 나는 당신의 제안 된 방법을 다시 시험하고 왜 그것이 저를 위해 작동하지 않은지 생각해보고 있습니까? – Ziiiii

관련 문제