2013-05-22 3 views
0

내가 할 수있는 모든 노력을했지만 내 libgdx 응용 프로그램은 안드로이드 2.2로 축소되지 않습니다. 그것은 단지 480x320의 화면에 640x480의 전체 이미지를 표시합니다. 지금까지 제가 가지고있는 코드는 다음과 같습니다.Android 2.2에서 libGdx로 해상도를 관리하는 방법은 무엇입니까?

private static final int VIRTUAL_WIDTH = 640; 
private static final int VIRTUAL_HEIGHT = 480; 
private static final float ASPECT_RATIO = (float)VIRTUAL_WIDTH/(float)VIRTUAL_HEIGHT; 

public static Texture BMP_BACKGROUND; 

public static Rectangle viewport; 
public static OrthographicCamera camera; 
public static SpriteBatch batch; 

public void create() 
{ 
    float w = Gdx.graphics.getWidth(); 
    float h = Gdx.graphics.getHeight(); 

    BMP_BACKGROUND = new Texture(Gdx.files.internal("data/bmpSpaceBackground.png")); 
    BMP_BACKGROUND.setFilter(TextureFilter.Nearest, TextureFilter.Nearest); 

    batch = new SpriteBatch(); 
    camera = new OrthographicCamera(VIRTUAL_WIDTH, VIRTUAL_HEIGHT); 
} 

@Override 
public void dispose() 
{ 
    batch.dispose(); 
    BMP_BACKGROUND.dispose(); 
} 

@Override 
public void render() 
{ 
    camera.update(); 
    camera.apply(Gdx.gl10); 

    // set viewport 
    Gdx.gl.glViewport((int) viewport.x, (int) viewport.y, 
        (int) viewport.width, (int) viewport.height); 

    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

    batch.draw(BMP_BACKGROUND, 0, 0); 

    Game.run(); 
} 

public void resize(int width, int height) 
{ 
    float aspectRatio = (float)width/(float)height; 
    float scale = 1f; 
    Vector2 crop = new Vector2(0f, 0f); 
    if(aspectRatio > ASPECT_RATIO) 
    { 
     scale = (float)height/(float)VIRTUAL_HEIGHT; 
     crop.x = (width - VIRTUAL_WIDTH*scale)/2f; 
    } 
    else if(aspectRatio < ASPECT_RATIO) 
    { 
     scale = (float)width/(float)VIRTUAL_WIDTH; 
     crop.y = (height - VIRTUAL_HEIGHT*scale)/2f; 
    } 
    else 
    { 
     scale = (float)width/(float)VIRTUAL_WIDTH; 
    } 

    float w = (float)VIRTUAL_WIDTH*scale; 
    float h = (float)VIRTUAL_HEIGHT*scale; 
    viewport = new Rectangle((int)crop.x, (int)crop.y, (int)w, (int)h); 
} 

누구나 내가 뭘 잘못하고 있는지 말할 수 있습니까?

답변

2

public void resize(int width, int height) 
{ 
     cam.viewportHeight = height; //set the viewport 
     cam.viewportWidth = width; 
     if (Config.VIRTUAL_VIEW_WIDTH/cam.viewportWidth < Config.VIRTUAL_VIEW_HEIGHT 
       /cam.viewportHeight) { 
//sett the right zoom direct 
      cam.zoom = Config.VIRTUAL_VIEW_HEIGHT/cam.viewportHeight; 
     } else { 
//sett the right zoom direct 
      cam.zoom = Config.VIRTUAL_VIEW_WIDTH/cam.viewportWidth; 
     } 
     cam.update(); 
} 

이가하는 작업을 시도하고 나는 virutal 해상도로 작업 할 수 있습니다. 그러나 당신이 사용하는 무대 카메라를 설치하는 것을 잊지 마십시오! 다른 효과가 없습니다!
stage.setCamera(camera).
작업을 완료 한 경우 스테이지에서 가상 해상도로 작업 할 수 있습니다.
관련
Your code is 1:1 from an example online.

+0

신난다! 무리 감사! – DieJay

관련 문제