我正在绘制一些多边形形状并尝试在其上绘制纹理。
PolygonShape shape = new PolygonShape();
shape.set(new Vector2[]{
new Vector2(0, 0)
, new Vector2(x1 - x2, y1 - y2)
, new Vector2(x1 - x2, y1 - y2 - p)
, new Vector2(0, 0 - p)});
float[] vertices = new float[]{
0,
0,
(x1 - x2) * Constants.PPM ,
(y1 - y2) * Constants.PPM ,
(x1 - x2) * Constants.PPM,
(y1 - y2 - p) * Constants.PPM,
0,
(0 - p) * Constants.PPM };
EarClippingTriangulator triangulator = new EarClippingTriangulator();
ShortArray triangleIndices = triangulator.computeTriangles(vertices);
PolygonRegion polyReg = new PolygonRegion(new TextureRegion(texture), vertices, triangleIndices.toArray());
PolygonSprite poly = new PolygonSprite(polyReg);
poly.setPosition(posOffset, tmpBody.getPosition().y);
// polySprites.add(poly);
在draw()方法中,
poly.draw(polyBatch);
问题: 多边形的长度不同,但宽度是恒定的。我试图用纹理填充多边形,但不能将其正确填充/拉伸到大小和形状。
答案 0 :(得分:0)
在你的情况下,'多边形'仍然是四边形。所以我们不需要在这里复杂化。
所有要做的就是将旋转和平移变换设置为精灵和/或容器多边形。
在此处阅读更多内容:OpenGL Transformation matrices 这不是你需要实现的。但我希望你能得到主旨。
根据PolySprite
的实施方式,它可能看起来像以下内容:
PolygonSprite poly = new PolygonSprite(polyReg);
poly.setPosition(posOffset, tmpBody.getPosition().y); //
poly.setRotation(slope);
PolySprites.add(poly);