2016-06-01 5 views
0

Ich benutze Monogame 3.5 und ich habe ein einfaches Modell von Cube. Ich benutze BasicEffect, um es zu zeichnen. Ich möchte es transparent, also verwende ich effect.Alpha = 0.5f. Ist es möglich, alle Kanten wie auf dem Bild zu zeigen?Wie kann ich alle Kanten in Monogame anzeigen?

Antwort

0

Es gibt zwei Möglichkeiten, um diese je nach tun, was Sie suchen. Sie können den Rendering-Raster-Status so einstellen, dass Drahtgitter angezeigt wird, oder Sie können eine Liste Ihrer Kanten abrufen und eine Menge von VertexPositionColor mit GraphicsDevice.DrawIndexedPrimitives zeichnen.

Raster Sizer Staat

Sie den Würfel transparent zeichnen kann, und dann, vorausgesetzt, Sie zum BasicEffect verwenden, können Sie alle die Schattierung und die Farbe auf weiß auszuschalten.

Sie können den Cube dann neu zeichnen, wenn der neue Rasterizer-Status auf FillMode.Wireframe gesetzt ist. Hier ist ein Pseudo-Code.

//Draw the Cube Transparent 
DrawCubeTransparent(); 

//Now save the Rastersizer state for later 
RasterizerState originalRasterizerState = GraphicsDevice.RasterizerState; 


//Now set the RasterizerState too WireFrame 
RasterizerState newRasterizerState = new RasterizerState(); 
newRasterizerState.FillMode = FillMode.WireFrame; 
GraphicsDevice.RasterizerState = newRasterizerState; 

//Now redraw the cube as wireframe with the shading off and colour set to white 
DrawCubeWireFrame(); 

//Now reset the Rastersizer fill state 
raphicsDevice.RasterizerState = originalRasterizerState; 

DrawIndexedPrimitives

Die bisherige Methode könnte nicht ideal, weil es alle Dreiecksflächen ziehen wird, so dass es wil eine diagonale Linie durch seine Würfelflächen sein.

Die andere Möglichkeit besteht darin, herauszufinden, welche Kanten Sie zeichnen möchten, und dann mit DrawIndexedPrimitives ein Array von Vertices zu zeichnen, die all Ihre Kanten enthalten.

Eine einfache Google-Suche gibt Ihnen eine Menge Beispiele bei der Verwendung dieser.

Verwandte Themen