2013-04-04 3 views
3

MSDN Page for ReportLiveObjectsDirectX11 ReportLiveObjects instanciation

Je ne suis pas sûr comment appeler la méthode ReportLiveObjects que les classes que je tente de déclarer sont abstraites, ou dans le cas de IDXGIDebug « non déclaré » (Je pense que je manque un fichier d'en-tête ?).

Voici les extraits.

ID3D11Debug *debugDev = new ID3D11Debug(); 
    debugDev->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL); 

Le code ci-dessus me dit que la classe est abstraite, donc je ne peux pas créer un objet.

IDXGIDebug debugDev = new IDXGIDebug(); 

Le code ci-dessus me dit que IDXGIDebug est non déclaré.

Le fichier d'en-tête « de DXGI » a été inclus. La couche de débogage est activée.

Toute aide serait appréciée.

Répondre

7

Bien sûr, vous ne pouvez pas créer une interface ID3D11Debug directement.

La première étape consiste à créer votre ID3D11Device avec D3D11_CREATE_DEVICE_DEBUG drapeau, comme ceci:

creationFlags = 0; 

#ifdef _DEBUG 
     creationFlags |= D3D11_CREATE_DEVICE_DEBUG; 
#endif 

D3D11CreateDevice(...); 

Ensuite, vous devez interroger ID3D11Debug interface à partir de votre appareil, comme ceci:

m_d3dDevice->QueryInterface(__uuidof(ID3D11Debug), reinterpret_cast<void**>(&m_d3dDebug)); 

Deux liens utiles à propos de la couche de débogage D3D:

http://msdn.microsoft.com/en-US/library/windows/desktop/jj200584(v=vs.85).aspx http://blogs.msdn.com/b/chuckw/archive/2012/11/30/direct3d-sdk-debug-layer-tricks.aspx

+0

Le premier que je l'ai lu, mais il ne mentionne pas vraiment le dispositif de débogage. Le second était très instructif mais j'ai toujours des rapports simples sur certains objets, que je ne peux pas corriger car il semble que je manque un fichier d'entête de mon installation DX. Merci beaucoup. – Questioning