Domanda

Come un'esperienza di apprendimento, sto scrivendo una modalità immediata gestito DirectX 9 applicazione.

Sono calcolo manualmente normali ai vertici in tutti i triangoli in una scena per permettere ombreggiatura Gouraud liscia.

Questo funziona come previsto, ma credo questo non è l'approccio più efficace. E 'possibile ottenere la GPU di fare questo per me?

È stato utile?

Soluzione

Altri suggerimenti

Si potrebbe in teoria generare i normali ai vertici all'interno del vertex shader. Ciò comporta il calcolo ogni volta che si esegue il rendering utilizzando una maglia che lo shader, però, quindi perché non li generano in anticipo.

Se vuoi dire si desidera generare in anticipo di rendering, ma utilizzare la GPU anziché dalla CPU, direi che non vale la pena il fastidio di accelerare qualcosa che si sta solo andando a fare una volta. Inoltre, io non sono sicuro se DX9 ha un modo per ottenere informazioni vertice computerizzata di ritorno da uno shader (DX10 fa).

Tutto sommato, la cosa migliore da fare nella maggior parte dei casi, è la tradizionale: normali ai vertici di elaborazione nel programma che salva i file di dati che contengono le maglie - lo fanno come una fase di pre-calcolo. Di solito si hanno loro se la rete è venuto da un pacchetto 3D come Max o Maya, perché vi sono informazioni artistica nelle normali, se non si conosce l'intera rete dovrebbe essere perfettamente liscio (o sfaccettata), non è calcolabile nel caso generale .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top