我正在尝试显示一个简单的纹理梯形(透视中的道路)。为此,我使用SpriteBatch.draw顶点数组作为参数。但结果出乎意料。
究竟出了什么问题?或者我可能使用了错误的方法?
以下是代码:
@Override
public void create () {
texture = new Texture("road.jpg");
spriteBatch = new SpriteBatch();
float color = Color.toFloatBits(255, 255, 255, 255);
verts = new float[]{
0, 0, color, 0, 0,
Gdx.graphics.getWidth()/2-100, 300, color, 0, 1,
Gdx.graphics.getWidth()/2+100, 300, color, 1, 1,
Gdx.graphics.getWidth(), 0, color, 1, 0,
};
shapeRenderer = new ShapeRenderer();
}
@Override
public void render () {
Gdx.gl.glClearColor(0, 0.5f, 1f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.rect(0, 0, 640, 300);
shapeRenderer.end();
spriteBatch.begin();
spriteBatch.draw(texture, verts, 0, verts.length);
spriteBatch.end();
}
答案 0 :(得分:0)
draw(Texture texture, float[] spriteVertices, int offset, int count)
使用给定的顶点绘制一个矩形。
LibGDX将这些矩形绘制为两个三角形,因此它会分割纹理。问题是矩形中的这些三角形大小相同,但在梯形中它们不是,因此它们会变形。
解决方案是使用投影或网格。