0

D3D11Device::ReportLiveDeviceObjects の仕組みがよくわかりません。

これを呼び出すと、出力またはコンソールに何も表示されません。

http://msdn.microsoft.com/en-us/library/windows/desktop/ff476370(v=vs.85).aspx

4

2 に答える 2

1

ID3D11Debug::ReportLiveDeviceObjects(not ID3D11Device::) Visual Studio の出力ウィンドウにレポートします。

ただし、このレポートを作成するには、フラグID3D11Device付きで作成されたが必要です。D3D11_CREATE_DEVICE_DEBUG(デフォルトで短いレポートがあります)

ID3D11Debug詳細なレポートを取得するには、現在のデバイスからクエリされた有効なオブジェクトが必要です。このような:

m_pDevice->QueryInterface(__uuidof(ID3D11Debug), (void**)(&m_pD3D11Debug));

ID3D11Debug::ReportLiveDeviceObjects()次に、D3D11_RLDO_DETAIL;で呼び出すだけです。

警告が表示されない場合は、おそらくすべての COM が正しくリリースされています。確実に確認するために、カスタムの一時的なリークを作成してみてください。

私の意見では、そのレポートはほとんど役に立ちません。誤検知の警告がたくさんあります。

COM オブジェクトをスマートな COM ポインタ クラスにカプセル化するだけで、それらが正しく解放されることを確認できます。

于 2013-08-30T09:34:34.693 に答える