2017-05-02 2 views
0

ich ein Rechteck mache:Rechteck Zeichnen und auf Batch sehen ohne Textur

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

und dann auch eine gewisse Textur auf der Position des Rechtecks ​​zeichnen wie:

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

Nun, was ich will Zu tun ist auch die Form des Rechtecks, wie ich einige Grenze sehen muss, so dass ich meine Rechteckgrenze sowie meine Textur sehen kann. Und ich brauche das zum Debuggen Zwecke wie die Textur ist komplex wie irgendwo der Hintergrund transparent ist, so möchte ich die Kollision von diesen Orten zu entfernen, und deshalb denke ich, wenn ich sowohl die Rechtecke und das Sprite sehen könnte, wäre es toll.

Obwohl ich dies zu tun versucht:

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

ich den obigen Code mir die Textur sowie sehen Sie das Rechteck zeichnen würde helfen, aber stellt sich heraus, i Grenze nur das Rechteck sehen konnte und nicht die Textur.

Hier ist der Ausgang:

pass the bars: a ball game

Im Bild können Sie ein rotes Rechteck sehen, und das ist, wo ich meine Bar zu debuggen versuche (Bar der gelben Farbe auch sein sollte hier gezeigt), aber mein Gelb erscheint nicht, da dieses Rechteck mit rotem Rand meinen Balken überlappt.

klar sein, ich will das shapeRenderer direkt über der Textur sehen und die beiden

+1

Haben Sie beide versucht mit, zuerst die Textur mit dem normalen Spritebatch zeichnen dann die ShapeRenderer mit das Rechteck zeichnen? – dfour

+0

Ja, ich habe versucht, beide zu tun und ShapeRenderer überschreibt die Zeichentextur komplett mit Batch und das passiert, weil ShapeRenderer-Code nach dem Zeichnen der Textur zu Batch geschrieben wird, aber da ich ShapeType in ShapeRenderer verwende ich dachte, ich könnte beide sehen, aber anscheinend tut nicht so aus. –

+0

Möglicherweise müssen Sie das Mischen vor allen Zeichenaufrufen durch den Shape-Renderer aktivieren, um Transparenz zu ermöglichen. Gdx.gl.glEnable (GL10.GL_BLEND); Gdx.gl.glBlendFunc (GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); Renderform Gdx.gl.glDisable (GL10.GL_BLEND); – dfour

Antwort

0

So fand ich die Antwort sehen können,

Wie Sie wissen, dass ich ein Rechteck erscheinen wollte über meiner Textur, so dass ich beide sehen konnte - meine Textur und meine ShapeRenderer Form, aber stattdessen konnte ich nur meine Form und nicht die Textur sehen.

Problem war, dass Was tat i die Partie begann und im Inneren, dass ich schrieb den Code zu der Charge für das Zeichnen und auch den Code der shapeRenderer dem Ansatz, wie dies für Zeichnung:

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

Die Der obige Code ersetzt meine Textur, da sie nur eine Sache an den Koordinaten 0,0 zeichnen kann, also zeichnet sie zuerst die Textur bei 0,0 und dann den Shaperender bei 0,0.

Die Lösung war:

Um die shapeRenderer separat und nicht im batch.begin() und batch.end() wie zu zeichnen:

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

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