Delen via


Direct3D-foutopsporingsgegevens inschakelen (Direct3D 9)

Wilt u meer informatie over Direct3D-objecten vinden tijdens foutopsporing? In de volgende schermafbeelding ziet u bijvoorbeeld wat u meestal ziet wanneer u een Direct3D-interface bekijkt in het horlogevenster.

schermafbeelding van een Direct3D-interface in het waarschuwingsvenster

U kunt de belangrijkste foutopsporingsobjecten inschakelen, zodat een gespiegeld object dat alle eigenschappen van het object bevat, kan worden weergegeven in het horlogevenster. Neem gewoon de volgende #define op in uw code vóór het bestand D3D9.h:

#define D3D_DEBUG_INFO

Als u foutopsporingsinformatie wilt inschakelen, moet de #define worden gebouwd vóór het bestand D3D9.h (Elk programma dat DXUT gebruikt, schakelt automatisch D3D_DEBUG_INFO in wanneer het programma wordt gecompileerd voor foutopsporing). Als u een SDK-voorbeeld uitvoert, ziet u dit in DXStdAfx.h (wat van invloed is op alle C++-voorbeelden). U moet ook de direct3D-runtime voor foutopsporing uitvoeren (die indien nodig vanuit het Configuratiescherm kan worden ingeschakeld).

Hier volgt een voorbeeld met behulp van de BasicHLSL Sample.

  1. Voeg de #define toe aan het bestand Dxstdafx.h vóór regel 37.
  2. Bouw een foutopsporingsproject.
  3. Stel een onderbrekingspunt in op regel 307 in BasicHLSL.cpp
  4. Voer het foutopsporingsprogramma uit.

In de volgende schermafbeelding ziet u het soort gedetailleerde informatie dat u kunt krijgen over een Direct3D-patroonobject vanuit het horlogevenster.

schermafbeelding van een Direct3D texture-object in het Watch-venster

Notitie

De objecteigenschapsnamen zijn zichtbaar en de waarden zijn alleen juist wanneer de runtime voor foutopsporing is ingeschakeld. Bij uitvoering in de retailruntime zijn de waarden ongeldig.

 

De aanroepstack gebruiken voor uitgebreide foutopsporing

Als Direct3D-foutopsporing is ingeschakeld, kunt u ook elke keer dat een object wordt gemaakt een aanroepstack bekijken. Dit maakt uw toepassing erg traag, maar kan worden gebruikt om te controleren op resourcelekken. Als u de aanroepstack wilt schrijven, stelt u de volgende registersleutel in op 1:

\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Direct3D\\
D3D9Debugging\\EnableCreationStack

Als u uw toepassing bouwt met ingeschakelde foutopsporing, hebt u toegang tot deze aanvullende variabele:

  LPCWSTR CreationCallStack;

Met deze variabele wordt de aanroepstack opgeslagen telkens wanneer een object wordt gemaakt. Hierdoor wordt uw toepassing erg traag, maar kan worden gebruikt om fouten in resourcelekken op te sporen.

Programmeertips