与libgdx中纹理区域渲染有关的基本疑问?

时间:2014-05-19 13:46:07

标签: libgdx

我刚刚开始使用libgdx。我对纹理区域的渲染有一些疑问。这是我的代码

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

    camera = new OrthographicCamera(1, h/w);
    batch = new SpriteBatch();

    texture = new Texture(Gdx.files.internal("data/libgdx.png"));
    texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);

    TextureRegion region = new TextureRegion(texture, 0, 0, 512, 275);

    sprite = new Sprite(region);
    sprite.setSize(1f, 1f * sprite.getHeight() / sprite.getWidth());
    sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2);
    sprite.setPosition(-sprite.getWidth()/2, -sprite.getHeight()/2);
    sprite.setRotation(30);
}

在这种情况下,精灵呈现完美。 但如果我换线

sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2);

sprite.setOrigin(any constant values like 50, sprite.getHeight()/2);

我只得到蓝屏。 当我以这种方式设定位置时也会发生同样的事情。

此外,如果我使用

之类的东西
sprite.setOrigin(0.53*sprite.getWidth()/2, sprite.getHeight()/2);

它按预期呈现,为什么当我使用sprite.getWidth()的任何倍数时它会按预期呈现,而不是当我使用相同值的常量时。

修改

这是我的调整大小和渲染方法

@Override
public void render() {      
    Gdx.gl.glClearColor(0, 0, 1, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    sprite.draw(batch);
    batch.end();
}

@Override
public void resize(int width, int height) {
}

我这里没有改变任何事情。

1 个答案:

答案 0 :(得分:1)

这可能取决于您的渲染相机设置。这可能是由于原点超出界限造成的。换句话说,尝试将其设置为(例如)更低或更高的值。