Domande frequenti sulla conversione di DirectX 11

Risposte alle domande frequenti sulla conversione dei giochi in piattaforma UWP (Universal Windows Platform) (UWP).

La conversione del gioco sarà un set di operazioni di ricerca e sostituzione sui metodi API o è necessario pianificare un processo di conversione più ponderato?

Direct3D 11 è un aggiornamento significativo da Direct3D 9. Esistono diversi cambiamenti di paradigma, tra cui API separate per la scheda grafica virtualizzata e il relativo contesto, nonché un nuovo livello di polimorfismo per le risorse del dispositivo. Il tuo gioco può comunque usare l'hardware grafico in pratica allo stesso modo, ma dovrai conoscere la nuova architettura api Direct3D 11 e aggiornare ogni parte del codice grafico per usare i componenti API corretti. Vedere Concetti e considerazioni sulla conversione.

Qual è il nuovo contesto di dispositivo per? Dovrei sostituire il mio dispositivo Direct3D 9 con il dispositivo Direct3D 11, il contesto di dispositivo o entrambi?

Il dispositivo Direct3D viene ora usato per creare risorse in memoria video, mentre il contesto del dispositivo viene usato per impostare lo stato della pipeline e generare comandi di rendering. Per altre info, vedi: Quali sono le modifiche più importanti rispetto a Direct3D 9?

Devo aggiornare il timer del gioco per la piattaforma UWP?

QueryPerformanceCounter, insieme a QueryPerformanceFrequency, è ancora il modo migliore per implementare un timer di gioco per le app UWP.

Dovresti essere a conoscenza di una sfumatura con timer e il ciclo di vita dell'app UWP. La sospensione/ripresa è diversa da un giocatore che riavvia un gioco desktop perché il gioco riprenderà uno snapshot nel tempo dall'ultima partita. Se è trascorso molto tempo, ad esempio alcune settimane, alcune implementazioni del timer di gioco potrebbero non comportarsi correttamente. Puoi usare gli eventi del ciclo di vita dell'app per reimpostare il timer quando il gioco riprende.

I giochi che usano ancora l'istruzione RDTSC devono eseguire l'aggiornamento. Vedi Tempi del gioco e processori multicore.

Il mio codice di gioco è basato su D3DX e DXUT. È disponibile qualcosa che può essere utile per eseguire la migrazione del codice?

Il progetto della community directX Tool Kit (DirectXTK) offre classi helper da usare con Direct3D 11.

Ricerca per categorie mantenere i percorsi di codice per il desktop e Microsoft Store?

La serie di articoli di Chuck Walbourn intitolata Dual-use Coding Techniques for Games offre indicazioni sulla condivisione del codice tra il desktop e i percorsi di codice di Microsoft Store.

Ricerca per categorie caricare le risorse immagine nell'app UWP DirectX?

Per il caricamento delle immagini sono disponibili due percorsi API:

  • La pipeline di contenuto converte le immagini in file DDS usati come risorse trama Direct3D. Vedi Uso di asset 3D nel gioco o nell'app.
  • Il componente Windows Imaging può essere usato per caricare immagini da un'ampia gamma di formati e può essere usato per bitmap Direct2D e risorse di trama Direct3D.

È anche possibile usare DDSTextureLoader e WICTextureLoader, da DirectXTK o DirectXTex.

Dov'è DirectX SDK?

DirectX SDK è incluso come parte di Windows SDK. L'SDK DirectX più recente separato da Windows SDK è stato nel giugno 2010. Gli esempi direct3D si trovano in Code Gallery insieme agli altri esempi di app di Windows.

Che ne dici di DirectX Redistributables?

La maggior parte dei componenti di Windows SDK è già inclusa nelle versioni supportate del sistema operativo o non dispone di alcun componente DLL, ad esempio DirectXMath. Tutti i componenti dell'API Direct3D che le app UWP possono usare saranno già disponibili per il gioco; non è necessario ridistribuirli.

Le applicazioni desktop Win32 usano ancora DirectSetup, quindi se stai aggiornando anche la versione desktop del gioco vedi Distribuzione direct3D 11 per sviluppatori di giochi.

Esiste un modo per aggiornare il codice desktop a DirectX 11 prima di uscire da Effects?

Vedi gli effetti per l'aggiornamento di Direct3D 11. Effetti 11 consente di rimuovere le dipendenze dalle intestazioni legacy di DirectX SDK; è destinato all'uso come supporto per la conversione e può essere usato solo con le app desktop.

Esiste un percorso per convertire il gioco DirectX 8 in UWP?

Yes:

Posso convertire il mio gioco DirectX 10 o 11 in UWP?

I giochi desktop DirectX 10.x e 11 sono facili da convertire in UWP. Vedere Migrazione a Direct3D 11.

Ricerca per categorie scegliere il dispositivo di visualizzazione corretto in un sistema multi-monitor?

L'utente seleziona il monitoraggio in cui viene visualizzata l'app. Consentire a Windows di fornire la scheda corretta chiamando D3D11CreateDevice con il primo parametro impostato su nullptr. Ottenere quindi l'interfaccia IDXGIDevice del dispositivo, chiamare GetAdapter e usare l'adattatore DXGI per creare la catena di scambio.

Ricerca per categorie attivare l'antialiasing?

L'antialiasing (multicampionamento) è abilitato quando si crea il dispositivo Direct3D. Enumerare il supporto per il multicampionamento chiamando CheckMultisampleQualityLevels, quindi impostare le opzioni multisample nella struttura DXGI_SAMPLE_DESC quando si chiama CreateSurface.

Il rendering del gioco viene eseguito usando il multithreading e/o il rendering posticipato. Cosa devo sapere per Direct3D 11?

Per iniziare, vedere Introduzione al multithreading in Direct3D 11 . Per un elenco delle differenze principali, vedere Differenze di threading tra le versioni Direct3D. Si noti che il rendering posticipato usa un contesto posticipato del dispositivo anziché un contesto immediato.

Dove è possibile leggere altre informazioni sulla pipeline programmabile da Direct3D 9?

Cosa è consigliabile usare invece del formato di file x per i modelli?

Anche se non è disponibile una sostituzione ufficiale per il formato di file con estensione x, molti degli esempi usano il formato SDKMesh. Visual Studio include anche una pipeline di contenuto che compila diversi formati comuni in file CMO che possono essere caricati con codice dallo starter kit 3D di Visual Studio o caricati tramite DirectXTK.

Ricerca per categorie eseguire il debug degli shader?

Microsoft Visual Studio include strumenti di diagnostica per la grafica DirectX. Vedere Debug di grafica DirectX.

Qual è l'equivalente direct3D 11 per la funzione x?

Vedere il mapping delle funzioni fornito in Eseguire il mapping delle funzionalità di DirectX 9 alle API DirectX 11.

Qual è l'equivalente di DXGI\_FORMAT di formato superficie y?

Vedere il mapping dei formati di superficie disponibili nelle funzionalità di Map DirectX 9 alle API DirectX 11.