Страница MSDN для объектов ReportLiveObjects
Я не уверен, как вызвать метод ReportLiveObjects, поскольку классы, которые я пытаюсь объявить, являются абстрактными, или в случае IDXGIDebug «undeclared» (я думаю, что мне не хватает файла заголовка?).
Вот фрагменты.
ID3D11Debug *debugDev = new ID3D11Debug();
debugDev->ReportLiveDeviceObjects( D3D11_RLDO_DETAIL );
Приведенный выше код говорит мне, что класс абстрактный, поэтому я не могу создать объект.
IDXGIDebug debugDev = new IDXGIDebug();
Приведенный выше код говорит мне, что IDXGIDebug не объявлен.
Заголовочный файл «DXGI» был включен. Слой отладки включен.
Любая помощь будет оценена.
Конечно, вы не можете создать ID3D11Debug
интерфейс напрямую.
Первый шаг — создать свой ID3D11Device
с D3D11_CREATE_DEVICE_DEBUG
флаг, вот так:
creationFlags = 0;
#ifdef _DEBUG
creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
D3D11CreateDevice(...);
Тогда вы должны запросить ID3D11Debug
Интерфейс от вашего устройства, как это:
m_d3dDevice->QueryInterface(__uuidof(ID3D11Debug), reinterpret_cast<void**>(&m_d3dDebug));
Две полезные ссылки об уровне отладки 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
Других решений пока нет …