2017-05-02 44 views
0

我想提出一個矩形:繪製矩形,並看到它批次沒有任何紋理

rect = new Rectangle(); 
rect.x = 40; 
rect.y = 100; 
rect.setSize(100,100); 

,然後也畫一些紋理的矩形狀的位置:

batch.draw(myTexture, rect.x , rect.y, rect.width, rect.height); 

現在我想要什麼要做的還是看到矩形的形狀,就像我必須看到一些邊界,以便我可以看到我的矩形邊界以及我的紋理。我需要這個用於調試的目的,因爲紋理很複雜,就像背景透明的地方一樣,所以我想從這些地方移除碰撞,這就是爲什麼我想如果我能看到矩形和精靈這將是偉大的。

雖然我試着這樣做:

shapeRenderer.begin(ShapeRenderer.ShapeType.Line); 
shapeRenderer.setColor(Color.RED); 
shapeRenderer.rect(0,0,100,100); 
shapeRenderer.end(); 

我想上面的代碼會幫我畫的質感以及看到該矩形,但事實證明我能看到的只是矩形的邊界,而不是質感。

這裏是輸出:

pass the bars: a ball game

在圖像中,可以看到一個紅色的長方形而這正是我試圖調試我吧(黃顏色的酒吧也被認爲是這裏顯示)但我的黃色不會出現,因爲這個紅色的邊界矩形重疊了我的酒吧。

需要明確的是,我希望看到的shapeRenderer正確的紋理上方,可以看到他們兩個

+1

您是否嘗試過使用這兩種,先繪製紋理與正常SpriteBatch然後使用ShapeRenderer繪製矩形? – dfour

+0

是的我已經嘗試做這兩個和shapeRenderer完全覆蓋批處理繪圖紋理,這發生因爲shapeRenderer代碼後繪製紋理批處理寫入,但因爲我在shapeRenderer線ShapeType我認爲我可能會看到他們兩個,但顯然是做不是這樣的。 –

+0

您可能需要在形狀渲染器進行繪製調用之前啓用混合以允許透明。 Gdx.gl.glEnable(GL10.GL_BLEND); Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA,GL10。GL_ONE_MINUS_SRC_ALPHA); 呈現形狀 Gdx.gl.glDisable(GL10.GL_BLEND); – dfour

回答

0

所以,我找到了答案,

正如你知道我想出現一個矩形在我的紋理上,以便我可以看到兩者 - 我的紋理和shapeRenderer形狀,但是我只能看到我的形狀而不是紋理。

的問題是,什麼是做的是我開始的批次和裏面我寫的代碼繪製到批量,也是代碼繪製shapeRenderer到一批這樣的:

batch.begin(); 
batch.draw(texture,0,0,0,0); 
shapeRenderer.begin(); 
shapeRenderer.rect(0,0,0,0); 
shapeRenderer.end(); 
batch.end(); 

的上面的代碼替換了我的紋理,因爲它只能在座標0,0處繪製一個東西,所以首先繪製紋理爲0,0,然後在0,0處繪製shaperenderer。

的解決方案是:

要單獨,而不是畫shapeRenderer的batch.begin()batch.end()內等:

batch.begin(); 
batch.draw(texture,0,0,0,0); 
batch.end(); 

shapeRenderer.begin(); 
shapeRenderer.rect(0,0,0,0); 
shapeRenderer.end();