2016-01-29 279 views
2

我正在繪製一些多邊形形狀並試圖在其上繪製紋理。繪製多邊形形狀的紋理

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

回答

0

就你而言,「多邊形」仍然是四邊形。所以我們不需要在這裏複雜化。

所有要做的就是將旋轉和平移轉換設置爲精靈和/或容器多邊形。

更多此處閱讀:OpenGL Transformation matrices 這不完全是你需要實現的。但我希望你能得到這個主意。

它可以看起來像取決於你的PolySprite如何實施如下:

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

如何重複圖像/紋理填充的形狀? – redGREENblue

+0

多次繪製它,每次都進行不同的轉換。您可能需要計算否。的重複取決於容器和每個精靈的大小。 –