我想使用libgdx ShapeRenderer来模拟我的图形,但是我得到一个小但仍然令人讨厌的坐标不匹配。如libgdx wiki所述,屏幕坐标范围:(0,0)(左下角)到(Gdx.graphics.getWidth() - 1,Gdx.graphics.getHeight() - 1)(右上角)
以下是我尝试做的代码示例:
public static final int APP_WIDTH = 160;
public static final int APP_HEIGHT = 120;
private SpriteBatch batch;
private ShapeRenderer shapeRenderer;
private Texture texture;
...
public void render() {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
if (DEBUG_MODE) {
shapeRenderer.setAutoShapeType(true);
shapeRenderer.setColor(Color.RED);
shapeRenderer.begin();
shapeRenderer.rect(0, 0, APP_WIDTH - 1, APP_HEIGHT - 1);
shapeRenderer.end();
} else {
batch.begin();
batch.draw(texture, 0, 0);
batch.end();
}
}
结果我得到: image link
正如您所看到的,纹理(160x120)的绘制方式与它应该完全相同,但矩形(使用shapeRenderer绘制)具有-1 x轴偏移。 当然,我可以在x + 1处绘制所有内容,但也许我做错了什么并且有一种方法可以使坐标匹配?