2014-09-12 20 views
1

我对libGDX上的PolygonSpriteBatch有两个问题。PolygonSpriteBatch问题

1)我尝试渲染一个简单的多边形(在这种情况下是一个矩形),我只看到一个三角形绘制时。

图片: http://i.snag.gy/kHV3N.jpg

 texture=new TextureRegion(new Texture("texture.png")); 
     texture.getTexture().setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat); 
     polygonRegion=new PolygonRegion(texture,createVertices(),createIndices(createVertices())); 

,我要绘制多边形是这样的一个

private float[] createVertices() { 
    float[] verts = new float[5 * 2]; 
    int i = 0; 
    verts[i++] = 2; 
    verts[i++] = 2; 
    verts[i++] = 2; 
    verts[i++] = 3; 
    verts[i++] = 3; 
    verts[i++] = 3; 
    verts[i++] = 3; 
    verts[i++] = 2; 
    verts[i++] = verts[0]; 
    verts[i++] = verts[1]; 
    return verts; 

}

private short[] createIndices(float[] vertices){ 
     short[] indices=new short[vertices.length/2]; 
     for(short i=0; i<vertices.length/2; i++){ 
      indices[i]=i; 
     } 
     return indices; 
    } 

当我画它

shapeRenderer.setProjectionMatrix(camera.combined); 
    shapeRenderer.begin(ShapeRenderer.ShapeType.Line); 
    shapeRenderer.polygon(createVertices()); 
    shapeRenderer.end(); 
    polygonSpriteBatch.setProjectionMatrix(camera.combined); 
    polygonSpriteBatch.begin(); 
    polygonSpriteBatch.draw(polygonRegion, 0, 0); 

    polygonSpriteBatch.end(); 

我还提请平原质地,看看它的样子

batch.setProjectionMatrix(camera.combined); 
    batch.begin(); 
    batch.draw(texture, 4f, 2.4f, 1f, 1f); 
    batch.end(); 

正如你所看到的,多边形绘制正确与shaperenderer,但与polygonspritebatch没有得到很好的质感。

第二个问题: 而不是上述问题,polygonspritebatch在使用普通相机尺寸(如800x480)时效果很好。 当我使用8 x 4.8的相机(适用于box2d世界)时,纹理会放大很多。

任何解决方案?

回答

1

对于第一个问题,问题是createIndices()函数。 PolygonRegion的第三个参数需要包含多个三的倍数(前三个顶点形成一个三角形等)。

所以你应该返回{0,1,2,1,2,3}。另外,为什么你有5个顶点?看来四个就够了。

对于第二个问题,您应该澄清您的问题。从截图中,一切似乎都很好。

+0

我已经改变了绘制它们的方式。谢谢。 MERSI。 – 2014-09-13 17:50:48