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
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.