2012-03-22 4 views
1

Я использую рендеринг box2D для просмотра моей графики (я попытался использовать текстуры, и получаю точно такой же результат). Мой код рендеринга выглядит следующим образом:Размер экрана не растягивается, чтобы соответствовать экрану, как обычно

public void render() 
{ 

    long startTime = System.nanoTime(); 
    world.step(Gdx.app.getGraphics().getDeltaTime(), 3, 3); 
    float updateTime = (System.nanoTime() - startTime)/1000000000.0f; 
    startTime = System.nanoTime(); 
    float renderTime = (System.nanoTime() - startTime)/1000000000.0f; 

    GL10 gl = Gdx.app.getGraphics().getGL10(); 
    camera.update(); 
    camera.apply(gl); 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

    batch.setProjectionMatrix(camera.combined); 

    renderer.render(world, camera.combined); 

    batch.begin(); 


    font.setScale(0.020f); 
    font.draw(batch, "fps:" + Gdx.graphics.getFramesPerSecond() + ", update: " + updateTime + ", render: " + renderTime, 0, 
     20); 
    batch.end(); 


} 

Которая работает совершенно нормально на настольной версии и отображает как следует. enter image description here

Однако, когда я запускаю его на свой телефон, я получаю это, что не то, что я хочу:

enter image description here

Как вы можете видеть его было сжато только взять на верхней части экрана.

Есть ли ошибка в libgdx или я что-то упускаю?

Edit: Полный код создания:

Vector2 pouchPos = new Vector2(0, -12); 
    slingshotListener = new SlingshotListener(pouchPos); 

    batch = new SpriteBatch(); 
    camera = new OrthographicCamera(32, 48); 
    Gdx.input.setInputProcessor(slingshotListener); 

    font = new BitmapFont(); 
    renderer = new Box2DDebugRenderer(); 
    world = new World(new Vector2(0, -10), true); 

    BodyDef bd = new BodyDef(); 
    ground = world.createBody(bd); 

    EdgeShape shape = new EdgeShape(); 
    shape.set(new Vector2(-16, -20), new Vector2(16, -20)); 

    FixtureDef fd = new FixtureDef(); 
    fd.shape = shape; 
    ground.createFixture(fd); 

    shape.dispose(); 

    Misc.createLine(new Vector2(-3, -16), pouchPos, camera, world).setSensor(true); 
    Misc.createLine(new Vector2(3, -16), pouchPos, camera, world).setSensor(true); 

    pic = new Texture(Gdx.files.internal("pong/ball.png")); 
+0

Как вы настройке видовых и положения камеры? –

+0

Я думаю, что это разница в разрешении экрана, из-за чего два появляются по-разному. Ответ на этот вопрос может помочь: http://stackoverflow.com/q/9198932/324625, хотя ваша настройка немного отличается (похоже, вы не используете 2D-график сцены в libgdx). Главное, что вам нужно сосредоточить свой видовой экран и поместить камеру. Они должны выполняться при обработке 'resize()'. –

ответ

0

Я положил это в AndroidManifest.xml и, казалось, решить проблему:

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="13" /> 
+0

Вы должны добавить 4 пробела перед этим XML, чтобы он отображался в ответе. –

+0

Кроме того, вы знаете, почему изменение ожидаемых версий изменило отображение? –

+0

Что-то общее с miniSdkVersion 3 поддерживает только разрешение до 480x320, в результате чего моя игра запускается в режиме совместимости на телефонах с разрешением более 480x320. – Derek