Livelli software
Il runtime Direct3D 11 viene costruito con i livelli, a partire dalle funzionalità di base e dalla creazione di funzionalità facoltative e di assist per sviluppatori in livelli esterni. In questa sezione vengono descritte le funzionalità di ogni livello.
Come regola generale, i livelli aggiungono funzionalità, ma non modificano il comportamento esistente. Ad esempio, le funzioni di base avranno gli stessi valori restituiti indipendentemente dal livello di debug di cui viene creata un'istanza, anche se è possibile fornire un output di debug aggiuntivo se viene creata un'istanza del livello di debug.
Per creare livelli quando viene creato un dispositivo, chiamare D3D11CreateDevice o D3D11CreateDeviceAndSwapChain e specificare uno o più valori D3D11_CREATE_DEVICE_FLAG.
Direct3D 11 fornisce i livelli di runtime seguenti:
Livello principale
Il livello principale esiste per impostazione predefinita; fornendo un mapping molto sottile tra l'API e il driver di dispositivo, riducendo al minimo l'overhead per le chiamate ad alta frequenza. Poiché il livello principale è essenziale per le prestazioni, esegue solo la convalida critica. I livelli rimanenti sono facoltativi.
Livello di debug
Il livello di debug offre un'ampia convalida aggiuntiva di parametri e coerenza, ad esempio la convalida del collegamento dello shader e l'associazione di risorse, la convalida della coerenza dei parametri e la segnalazione delle descrizioni degli errori.
Per creare un dispositivo che supporti il livello di debug, è necessario installare DirectX SDK (per ottenere D3D11SDKLayers.dll) e quindi specificare il flag D3D11_CREATE_DEVICE_DEBUG quando si chiama la funzione D3D11CreateDevice o la funzione D3D11CreateDeviceAndSwapChain. Se si esegue l'applicazione con il livello di debug abilitato, l'applicazione sarà notevolmente più lenta. Tuttavia, per assicurarsi che l'applicazione sia pulita di errori e avvisi prima di spedirla, usare il livello di debug. Per altre info, vedi Uso del livello di debug per eseguire il debug delle app.
Nota
Per Windows 7 con Aggiornamento della piattaforma per Windows 7 (KB2670838) o Windows 8.x, per creare un dispositivo che supporti il livello di debug, installare Windows Software Development Kit (SDK) per Windows 8.x per ottenere D3D11_1SDKLayers.dll.
Nota
Per Windows 10, per creare un dispositivo che supporti il livello di debug, abilitare la funzionalità facoltativa "Strumenti grafici". Passare al pannello Impostazioni, in Sistema, App e funzionalità, Gestisci funzionalità facoltative, Aggiungi una funzionalità e quindi cercare "Strumenti grafici".
Nota
Per informazioni su come eseguire il debug delle app DirectX in remoto, vedi Debug di app DirectX in modalità remota.
In alternativa, è possibile abilitare o disabilitare il flag di debug usando l'Pannello di controllo DirectX incluso come parte di DirectX SDK.
Quando il livello di debug elenca le perdite di memoria, restituisce un elenco di puntatori all'interfaccia oggetto insieme ai relativi nomi descrittivi. Il nome descrittivo predefinito è "<senza nome>". È possibile impostare il nome descrittivo usando il metodo ID3D11DeviceChild::SetPrivateData e il GUID WKPDID_D3DDebugObjectName in D3Dcommon.h. Ad esempio, per denominare pTexture con un nome SDKLayer mytexture.jpg, usare il codice seguente:
const char c_szName[] = "mytexture.jpg";
pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
In genere, è consigliabile compilare queste chiamate dalla versione di produzione.
Argomenti correlati