If filled polygon cannot be drawn via libgdx ShapeRenderer , then what is the work around?

| | August 10, 2015

I know most of you would suggest me to draw a filled polygon by using combination of triangles and rectangles , but that is not possible for complex shapes . I want to basically draw a generic shape on screen , here it is enter image description here

The above shape needs to be drawn in generic form , i.e
-> the width of each trapezium’s upper edge is fixed .
-> the lower edge of the overall compound shape is a constant unit greater than upper edge.
-> this whole compound shape can have arbitrary length and thus number of individual trapeziums that compose the compound shape is not fixed.
I wish to draw each colored trapezium as a filled polygon .
Is there any way of achieving this

One Response to “If filled polygon cannot be drawn via libgdx ShapeRenderer , then what is the work around?”

  1. Alexandre Desbiens on November 30, -0001 @ 12:00 AM

    Copied from here: http://stackoverflow.com/questions/15733442/drawing-filled-polygon-with-libgdx

    Basically, you define a PolygonSpriteBatch using a PolygonSprite and a PolygonRegion:

    PolygonSprite poly;
    PolygonSpriteBatch polyBatch;
    Texture textureSolid;
    

    You then create them like this, giving the region a texture and the 4 corners coordinates (for the texture, you can load a plain solid colored texture, gray or red in your case):

    PolygonRegion polyReg = new PolygonRegion(new TextureRegion(textureSolid),
      new float[] {
        x1, y1,
        x2, y2,
        x3, y3,
        x4, y4
    });
    poly = new PolygonSprite(polyReg);
    poly.setOrigin(oX, oY);
    polyBatch = new PolygonSpriteBatch();
    

    And draw it like this:

    polyBatch.begin();
    poly.draw(polyBatch);
    polyBatch.end();
    

    Hope I helped!

Leave a Reply