2016-05-30 54 views
0

我不知道爲什麼ShapeRenderer對象不在屏幕上繪製圓。我嘗試修改代碼以包含建議,例如將我的shaperenderer對象的投影矩陣和變換矩陣更改爲批處理對象,甚至在shaperenderer.begin()之前添加batch.end()。這裏是我的代碼:ShapeRenderer LibGdx不工作

public void draw (Batch batch, float parentAlpha){ 
    super.draw(batch, parentAlpha); 
    batch.end(); 
    shapeRend.setProjectionMatrix(batch.getProjectionMatrix()); 
    shapeRend.setTransformMatrix(batch.getTransformMatrix()); 
    float x = body.getWorldCenter().x; 
    float y = body.getWorldCenter().y; 
    shapeRend.translate(x, y, 0); 


    shapeRend.begin(ShapeType.Filled); 
    shapeRend.setColor(Color.RED); 
    shapeRend.circle(0, 0, Constants.PLAYER_RADIUS); 
    shapeRend.end(); 
    batch.begin(); 


} 

實在是沒有其他的代碼,我可以提供比Contants.player_radius = 0.2,不應該有所作爲等。我有我的世界渲染器(Box2D物理),這是可見的,但shaperenderer圈不存在。最初我沒有把翻譯功能,直接把x和y放到shapeRend.circle(x,y,r)方法調用中,但我只是測試了不同的方法。任何的意見都將會有幫助。謝謝。

+0

我相信,如果你沒有設置任何東西,shaperenderer使用像素座標。我建議首先進行測試,然後在知道這個方法有效時向其添加轉換。 –

回答

1
@Override 
public void create() { 
    shapeRenderer = new ShapeRenderer(); 
    camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
} 

@Override 
public void render() { 
    Gdx.gl.glClearColor(1, 1, 1, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    Gdx.gl.glEnable(GL20.GL_BLEND); 
    Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); 
    Gdx.gl.glDisable(GL20.GL_BLEND); 

    shapeRenderer.setColor(Color.RED); 
    shapeRenderer.begin(ShapeType.FilledCircle); 
    shapeRenderer.filledCircle(25, 25, 25); 
    shapeRenderer.end(); 
} 
+0

在ShapeType類中沒有稱爲FilledCircle的靜態常量,並且在ShapeRenderer類中沒有填充循環方法。我也檢查過。我認爲他們把它拿出來了。我將你的建議的第一部分添加到了我的代碼中,但它並沒有做到這一點。我已經有glClearColor和clClear,但不是混合函數。 (還是)感謝你的建議。 –

1

對於可能被我的問題困擾的每個人,我很抱歉。我發現什麼是錯的。事情是我正在使用一個不同的正交相機,它有一個投影矩陣,它是左下方的一個小方塊。我未能將投影矩陣更改爲較小的左角。

shapeRend.setProjectionMatrix(camera.combined);

批次的投影矩陣沒有配置到相機,這就是爲什麼它失敗。

我不再使用shapeRenderer,因爲我相信使用紋理更好。感謝所有回答的人。