在多角形形状的图画纹理

时间:2016-01-29 07:45:07

标签: java opengl libgdx

我正在绘制一些多边形形状并尝试在其上绘制纹理。

    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); 

问题: 多边形的长度不同,但宽度是恒定的。我试图用纹理填充多边形,但不能将其正确填充/拉伸到大小和形状。

不确定我是否描述得很好,所以这里有一张图片详细说明了我想要实现的目标。 enter image description here

1 个答案:

答案 0 :(得分:0)

在你的情况下,'多边形'仍然是四边形。所以我们不需要在这里复杂化。

所有要做的就是将旋转和平移变换设置为精灵和/或容器多边形。

在此处阅读更多内容:OpenGL Transformation matrices 这不是你需要实现的。但我希望你能得到主旨。

根据PolySprite的实施方式,它可能看起来像以下内容:

PolygonSprite poly = new PolygonSprite(polyReg);
poly.setPosition(posOffset, tmpBody.getPosition().y); //
poly.setRotation(slope);
PolySprites.add(poly);