Debug di un modello Direct3D
Domanda
Sto cercando di eseguire il rendering di un modello in Direct3D utilizzando DrawIndexedPrimitives
. Tuttavia, non riesco a vederlo sullo schermo. Quali sono i soliti metodi utilizzati per il debug di un modello Direct3D?
Ho provato quanto segue:
- Disattivazione dell'abbattimento della faccia posteriore
- Utilizzato
PrimitiveType.LineStrip
invece diPrimitiveType.TriangleStrip
- Diverse combinazioni di matrici View e Projection.
- Utilizzato AutoCAD per tracciare i vertici come minuscole sfere
Soluzione
- Rendi il colore di sfondo grigio; quindi se è bianco o nero lo vedrai.
- Controlla le tue matrici di trasformazione (mondo / vista / proiezione). Usa una funzione matematica standard per view & amp; proiezione, imposta il mondo sull'identità.
- Assicurati di impostare il tuo viewport; facile dimenticarlo e avere 0 valori nella finestra.
- Attiva il debug D3D. Guarda lo spug di debug; molte persone mancano che il runtime ti dirà cosa non va.
- Controlla il tuo pixel / vertice shader. Utilizzare un'installazione nota che funzioni; o funzione fissa.
- Controlla lo stato di rendering. Disattiva buffering Z, test Z, scrittura Z, ecc. In caso di problemi di impostazione della profondità. Controlla che le maschere di scrittura a colori siano attive. Ci sono molti stati, cerca quelli che hai cambiato che potrebbero causare problemi.
- Controlla la tua chiamata a DrawIP: potresti avere problemi con i parametri come specificare un numero errato di vertici, facce, ecc. Prova a disegnare il primo triangolo nell'elenco e nessun altro; farne funzionare uno prima di disegnarli tutti ...
Altri suggerimenti
Utilizza lo strumento PIX da DX SDK. È assolutamente fantastico .
Probabilmente ti consigliamo di utilizzare la modalità di acquisizione a frame singolo. Quindi sulla chiamata di disegno PIX mostrerà il modello prima che abbia luogo l'elaborazione del vertice, dopo che ha luogo l'elaborazione del vertice, lo stato completo del dispositivo, i pixel risultanti resi, ecc.
Di default non c'è luce in D3D, può essere tutto nero. Prova ad accendere la luce se non l'hai fatto.