Domanda

Sto dilettarsi in DX11, e ho notato che non v'è alcuna ID3DX11Mesh come se ci fosse un ID3DX10Mesh in DX10. Immagino che questo potrebbe essere dovuto a una delle due cose, o ID3DX10Mesh non neet sostituzione, in quanto per lo più solo DX11 estende DX10, o è stato sostituito da qualcosa nel quadro XNA?

Non è esattamente un problema, il DX10 sembra ancora al lavoro con DX11, ma ho pensato che potrei anche implementare mia classe di maglia.

Ora la domanda è, come esattamente funziona l'ID3DX10Mesh :: DrawSubSet? Essere in grado di disegnare sottoinsiemi di una maglia con diversi materiali / proprietà è qualcosa che mi aspetto che avrò bisogno.

Lo so che utilizza una sorta di tabella degli attributi -. Sono poco chiaro però come questo viene memorizzato ed utilizzato

Una soluzione semplice che posso pensare sarebbe memorizzare semplicemente più buffer indice in una trama, una per ogni sottoinsieme. Con molte proprietà anche se questo potrebbe diventare un grande numero di buffer di indice.

In alternativa, memorizzando facce della maglia (referenziare vertici di indice) e assegnando oggetti da loro, ho potuto disegnare un sottoinsieme di facce con una certa proprietà costruendo un index buffer da tutte le facce con quelle proprietà.

Di questi due, la memorizzazione dei volti sembra più ordinato, ma mi aspetto che avrei dovuto memorizzare i buffer di indice in ogni caso. (Sacrificando tempo per ricostruire questi buffer ogni fotogramma sembra inutile)

suppongo molti sottoinsiemi dovrebbero essere evitati in ogni caso di mantenere il numero di chiamate sorteggio basso, e in tal caso i buffer aggiuntivi non dovrebbe richiedere troppa memoria aggiuntiva.

Né idea sembra ottimale, però, quindi mi piacerebbe benvenuto altre idee o indizi di effettiva attuazione del DrawSubSet:)

È stato utile?

Soluzione

In breve - dimenticare ID3DX__Mesh e implementare la propria classe che ha la funzionalità desiderate. Hanno tolto per lo stesso motivo hanno tolto * .x file supportano da DX10 - perché nonostante il fatto che MS aveva scritto in ogni angolo del DX SDK che file * .x è solo un / formato di test dev e non è adatto per l'uso in produzione, un sacco di sviluppatori (a quanto pare lazyor solo ignoranti) usavano, e l'invio di reclami a MS circa la sua lentezza / mancanza di alcune caratteristiche. Così MS ha imparato la lezione.

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