Domanda

Sto progettando un motore di gioco in DirectX 11 e ho avuto una domanda sulla funzione ID3D11DeviceContext :: iasetinputlayout. Da quello che posso trovare nella documentazione non si fa menzione di ciò che la funzione farà se si imposta un layout di input sul dispositivo che è stato precedentemente impostato. Nel contesto, se dovessi fare quanto segue:

//this assumes dc is a valid ID3D11DeviceContex interface and that
//ia is a valid ID3D11InputLayout interface.
dc->IASetInputLayout(&ia);

//other program lines: drawing, setting vertex shaders/pixel shaders, etc.

dc->IASetInputLayout(&ia);

//continue execution

Ciò comporterebbe una penalità di prestazione attraverso la commutazione dello stato del dispositivo o il runtime riconoscerebbe il layout di input come equivalente a quello già impostato e restituito?

È stato utile?

Soluzione

Anche se non riesco anche a trovare nulla a cui è già impostato in InputLayout, è possibile ottenere un puntatore al layout di input già vincolato chiamando ID3D11DeviceContext :: iagetinputlayout o facendo un controllo interno mantenendo il tuo riferimento, in questo modo non si Avere una chiamata all'oggetto ID3D11DeviceContext.

Altri suggerimenti

Per quanto ne so, dovrebbe rilevare che non ci sono cambiamenti e quindi la chiamata deve essere ignorata. Ma può essere facilmente testato: chiama questo metodo 10000 volte ogni rendering e vedi quanto è brutto il calo di FPS :)

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