DirectX: “vedere attraverso” i poligoni
-
12-10-2019 - |
Domanda
Ho creato una semplice applicazione DirectX che rende un campo di vertici. I vertici sono resi in questo modo (se visto dall'alto):
|\|\|\|\|
|\|\|\|\|
Ogni triangolo è reso in questo modo:
1
|\
2 3
che dovrebbe significare che il poligono è in senso antiorario e non essere resa, ma lo è. In ogni caso se visto dalla parte superiore del piano è perfetto.
Tuttavia, se visti da un altro livello alcuni poligoni sono una sorta di trasparente e si possono vedere la geometria dietro di loro. Ho evidenziato alcuni del luogo in cui questo sta accadendo.
Sto pensando questo è alcuni dei problemi di base, per principianti. Che cosa mi manca? La mia descrizione rasterizer è tale:
new RasterizerStateDescription
{
CullMode = CullMode.Front,
IsAntialiasedLineEnabled = true,
IsMultisampleEnabled = true,
IsDepthClipEnabled = true,
IsFrontCounterclockwise = false,
IsScissorEnabled = true,
DepthBias = 1,
DepthBiasClamp = 1000.0f,
FillMode = FillMode.Wireframe,
SlopeScaledDepthBias = 1.0f
};
Soluzione 2
Si è rivelato Ho appena avuto alcuna profondità-stencil buffer di set up. Oh, bene.
Altri suggerimenti
Questo legato alla progettazione. FillMode.Wireframe
disegna solo bordi di ciascun triangolo come linee. Questo è tutto.
Fare un primo passaggio di una modalità solido riempimento e scrive su di profondità e una maschera di colore (RenderTargetWriteMask
in D3D11 terminologia), e un secondo con il test di profondità (ma la profondità scrive off) e la modalità wireframe on. Si avrà probabilmente bisogno di polarizzazione profondità ugualmente poiché linee e triangoli non sono rasterizzati stesso modo (e loro z possono differire dalla posizione uguale frammento).
A proposito, questa tecnica è conosciuta come la rimozione delle linee nascoste. È possibile controllare questa presentazione per ulteriori dettagli.