Condividi tramite


Cattura informazioni grafica

È possibile acquisire informazioni grafiche dall'applicazione basata su DirectX per poter usare gli strumenti di diagnostica grafica Visual Studio per diagnosticare problemi di rendering.

Metodi di acquisizione

In Windows 8.1, il runtime di DirectX 11.2 può acquisire informazioni grafiche internamente per conto di strumenti di debug come quelli di diagnostica grafica. Questa tecnica è nota come acquisizione affidabile. Prima che questo supporto fosse aggiunto al runtime di DirectX, le informazioni grafiche venivano acquisite mediante l'intercettazione di determinate chiamate di funzione di DirectX per registrare argomenti e altre informazioni prima del completamento dell'inoltro della chiamata a DirectX. Questo metodo è noto come acquisizione legacy.

Dato che il runtime di DirectX ha la responsabilità esclusiva per l'acquisizione delle informazioni grafiche in Windows 8.1, non è necessario aggiornare l'acquisizione legacy per supportare DirectX 11.2 e tale metodo di acquisizione è quindi deprecato. Dato che il runtime di DirectX 11.2 non supporta versioni di Windows precedenti a Windows 8.1, tuttavia, Visual Studio 2013 supporta ancora l'acquisizione legacy per applicazioni destinate a Windows 8 e Windows 7.

Entrambi i metodi registrano informazioni simili e non modificano la modalità di acquisizione delle informazioni grafiche o quella di uso degli strumenti di diagnostica grafica.

Acquisizione affidabile

L'acquisizione affidabile supporta la diagnostica grafica di Visual Studio 2013 in Windows 8.1, Windows RT 8.1 e Windows Phone 8.1. Supporta anche da DirectX 10.0 a DirectX 11.2 e consente l'acquisizione di informazioni grafiche relative a nuove funzionalità di Direct3D 11.2, ad esempio le risorse allocate dinamicamente. L'acquisizione affidabile non fornisce tuttavia supporto completo per tutte le funzionalità di Direct3D 11.2. Non è ad esempio possibile eseguire il debug di uno shader HLSL creato usando la funzionalità di collegamento per gli shader HLSL. L'acquisizione affidabile usa una nuova API di acquisizione per supportare i propri scenari di acquisizione a livello di codice.

Acquisizione legacy

L'acquisizione legacy supporta la diagnostica grafica di Visual Studio 2013 e Visual Studio 2012 in Windows 8, Windows RT 8 e Windows 7. Supporta anche da DirectX 10.0 a DirectX 11.1. L'acquisizione legacy non supporta alcuna funzionalità di Direct3D 11.2 ed è deprecata salvo per quegli scenari in cui l'acquisizione affidabile non è disponibile. L'acquisizione legacy usa l'API di acquisizione definita nel file di intestazione vsgcapture.h per il supporto dei propri scenari di acquisizione a livello di codice. Questo tipo di acquisizione a livello di codice è anch'esso deprecato salvo per quegli scenari in cui l'acquisizione affidabile non è disponibile.

Acquisizione di informazioni grafiche

L'acquisizione di informazioni grafiche è un processo costituito da due fasi. Innanzitutto, eseguire l'applicazione nella diagnostica grafica, quindi specificare uno o più frame da cui acquisire informazioni dettagliate.

Per eseguire l'applicazione nella diagnostica grafica

  • Nella barra dei menu scegliere Debug, Grafica, Avvia diagnostica. Tastiera: premere ALT+F5.

  • Nella barra degli strumenti Diagnostica grafica selezionare il pulsante Avvia diagnostica.

Se un'app è in esecuzione nella diagnostica grafica, verranno costantemente acquisiti determinati tipi di informazioni grafiche, tra cui la configurazione dei dispositivi, la creazione della catena di scambio e di oggetti grafici e risorse, nonché altri eventi importanti che influiscono su più di un frame. Contemporaneamente, è possibile acquisire informazioni dettagliate su frame specifici; tali informazioni includono chiamate di disegno e invii di compute shader, oltre a risorse e oggetti Direct3D che li supportano.

Per acquisire un frame

  • Nella barra degli strumenti Diagnostica grafica in Visual Studio selezionare il pulsante Acquisisci frameIcona pulsante acquisizione grafica.

  • Premere STAMP sulla tastiera.

    Nota

    Mentre un'app è in esecuzione in Diagnostica grafica, è possibile usare il tasto STAMP solo per acquisire un frame di informazioni grafiche e non per eseguire la funzione standard.Questa condizione rimarrà attiva finché non si deciderà di interrompere l'acquisizione delle informazioni grafiche, in genere arrestando il debug o chiudendo l'app, anche se un'altra app presenta lo stato attivo.

  • In Visual Studio 2013 Update 3 l'interfaccia di acquisizione dei frame è stata modificata. Nell'interfaccia di acquisizione di Visual Studio scegliere il pulsante Acquisisci frame che si trova sopra la sequenza temporale Diagnostica sessione o scegliere il pulsante di grandi dimensioni Acquisisci frame che si trova sotto la corsia Frame al secondo e a destra dei frame acquisiti in precedenza. Entrambi i pulsanti sono evidenziati nell'immagine seguente.

    Acquisire frame con lo strumento di uso della GPU.

    Quando si è pronti per esaminare i frame acquisiti, avviare Analisi grafica di Visual Studio facendo clic sul collegamento Frame sopra le anteprime delle immagini oppure facendo doppio clic sull'anteprima.

È possibile acquisire solo frame interi e quindi, all'avvio di un'acquisizione, verranno effettivamente registrate le informazioni grafiche dal frame successivo. La registrazione inizierà immediatamente dopo aver verificato il frame in cui è stata avviata l'acquisizione e terminerà dopo aver verificato il frame acquisito. È possibile acquisire un numero indefinito di frame mentre l'app è in esecuzione nella diagnostica grafica. In assenza di frame acquisiti, il log di grafica verrà rimosso.

Quando si acquisisce un frame per la prima volta, in Visual Studio verrà visualizzata la finestra del documento del log di grafica (.vsglog). Se si chiude la finestra del log di grafica, si arresta il debug o si chiude l'app, non sarà possibile acquisire altri frame nel log. Per acquisire più informazioni grafiche, è necessario eseguire nuovamente l'app nella diagnostica grafica per avviare un nuovo log di grafica.

Opzioni di acquisizione di diagnostica grafica

È possibile configurare l'acquisizione per raccogliere stack di chiamate per tutti gli eventi grafici o per un subset limitato, per disabilitare l'HUD per l'acquisizione e per abilitare o disabilitare l'acquisizione in modalità di compatibilità.

Per configurare le opzioni di acquisizione di diagnostica grafica

  1. Nella barra dei menu scegliere Strumenti, Opzioni. Verrà visualizzata la finestra di dialogo Opzioni.

  2. Nell'elenco di categorie delle opzioni a sinistra scegliere Diagnostica grafica, quindi configurare le opzioni desiderate di Diagnostica grafica.

    • Raccogli stack di chiamate durante l'acquisizione (rallenta l'acquisizione)
      Selezionare questa casella per raccogliere gli stack di chiamate. Per impostazione predefinita, gli stack di chiamate vengono raccolti con l'opzione per indicatori draw, dispatch, present e perf selezionata. Per acquisire gli stack di chiamate per tutti gli eventi, selezionare per tutto. Per non raccogliere gli stack di chiamate, deselezionare la casella Raccogli stack di chiamate durante l'acquisizione (rallenta l'acquisizione).

    • Disabilita HUD di gioco durante l'acquisizione
      Selezionare questa casella per disabilitare l'hud in sovraimpressione visualizzato in genere da un'app in esecuzione nella diagnostica grafica. Deselezionarla per visualizzare l'hud in sovraimpressione.

    • Acquisisci in modalità di compatibilità
      Selezionare questa casella per acquisire le informazioni grafiche in modalità di compatibilità. L'acquisizione in modalità di compatibilità è l'impostazione predefinita. In modalità di compatibilità Direct3D non segnalerà che la GPU supporta tutte le funzionalità aggiuntive oltre a quelle definite nel livello funzionalità di base. Ciò impedisce all'app da acquisire di usare le estensioni specifiche dell'hardware della GPU su cui viene acquisita e assicura che il log di grafica possa essere riprodotto con qualsiasi GPU che supporta lo stesso livello funzionalità o un livello superiore. Deselezionare questa casella per disabilitare la modalità di compatibilità. I log acquisiti con la modalità di compatibilità disabilitata non verranno riprodotti su una GPU che non supporta le stesse funzionalità aggiuntive usate dall'app durante l'acquisizione.

Acquisizione remota di informazioni grafiche

È possibile acquisire informazioni grafiche da un'app in esecuzione nel computer locale o in un computer o dispositivo remoto. L'acquisizione remota è supportata per i computer Windows 8.1 e i dispositivi Windows RT 8.1. Per acquisire informazioni grafiche da un'app in esecuzione in remoto, configurare il progetto per il debug remoto e quindi eseguire l'app nella diagnostica grafica come descritto in precedenza. L'app viene eseguita nel computer remoto e le informazioni grafiche acquisite vengono registrate nel computer di sviluppo.

La modalità di configurazione del progetto per il debug remoto varia a seconda del tipo di app sviluppata e dal linguaggio di programmazione in uso. Per informazioni su come configurare il debug remoto per un'app Windows Store, vedere Eseguire app di Windows Store in un computer remoto da Visual Studio. Per informazioni su come configurare il debug remoto per un'app desktop Windows, vedere Impostazione del debug remoto per un progetto di Visual Studio.

Successivamente sarà possibile usare un computer o un dispositivo remoto per riprodurre le informazioni grafiche, indipendentemente dall'origine dell'acquisizione. Per altre informazioni, vedere Procedura: modificare il computer di riproduzione della diagnostica grafica.

Acquisizione di informazioni grafiche dalla riga di comando

È possibile acquisire le informazioni grafiche da un'app con uno strumento da riga di comando. Questo strumento, DXCap.exe, può acquisire e riprodurre rapidamente le informazioni grafiche senza usare Visual Studio o l'acquisizione a livello di codice. In particolare, è possibile usare DXCap.exe per l'automazione o in un ambiente di test. Per altre informazioni su DXCap.exe, vedere Strumento di acquisizione da riga di comando.

Vedere anche

Attività

Procedura dettagliata: cattura delle informazioni grafica