GetDirect3D от D3D9 возвращает объект d3d, отличный от исходного на ноутбуке с двумя графическими процессорами - PullRequest
2 голосов
/ 04 апреля 2019

См. Следующий код, я запускаю его на ноутбуке с двумя графическими процессорами, принудительно запускаю тестовую программу с помощью карты nvidia в панели управления nvidia.Указатель, возвращаемый GetDirect3D methord, отличается от исходного указателя pD3D, поэтому, когда я получаю некоторую информацию об адаптере, используя GetAdapterIdentifier или около того, я получаю неверную информацию, например, Identifier.Description возвращает строки Intel, абсолютно неtrue.

Нет проблем, если я принудительно заставлю программу использовать карту Intel или на других платформах только с одним GPU.Хотите знать почему?

HRESULT hr;

IDirect3D9* pD3D = Direct3DCreate9(SDK_VERSION);
hr = pD3D->CreateDevice(xxxx, &pd3dDevice);

IDirect3D9* pParentD3D = NULL;
hr = pd3dDevice->GetDirect3D(&pParentD3D);
...