我刚刚开始使用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) {
}
我这里没有改变任何事情。
答案 0 :(得分:1)
这可能取决于您的渲染相机设置。这可能是由于原点超出界限造成的。换句话说,尝试将其设置为(例如)更低或更高的值。