3
\$\begingroup\$

I'm relatively new to DirectX programming, and this is one of the more confusing issues I've encountered to date. According to the MSDN Documentation for DirectX 11:

"A device is used to create resources and to enumerate the capabilities of a display adapter."

and from the MSDN Documentation for DirectX 9:

"An adapter is a physical piece of hardware. Note that the graphics card might contain more than a single adapter, as is the case with a dual-headed display. "

From my neophyte perspective, these two concepts seem to overlap a fair amount. Am I correct in understanding that a device is an abstraction/encapsulation of a single adapter, which in turn is a software abstraction of a particular graphics card in the system?

\$\endgroup\$
2
\$\begingroup\$

The adapter is the physical (or emulated) device and is part of the DXGI api. These adapters are used in multiple APIs (D3D and D2D for example). The device is an abstraction on that that exposes APIs for creation of buffers and performing work in Direct3D. The device is basically what you work with and the adapter is what the device works with.

\$\endgroup\$
1
\$\begingroup\$

Yes. Adapters are your video cards (you can also create a software adapter).

First create a DXGIFactory https://msdn.microsoft.com/en-us/library/windows/desktop/dn268307(v=vs.85).aspx

Then query adapters on the device https://msdn.microsoft.com/en-us/library/windows/desktop/ff471336(v=vs.85).aspx

and last create your device with the adapter your prefer https://msdn.microsoft.com/en-us/library/windows/desktop/ff476082(v=vs.85).aspx

You can also query backwards from your device to see what adapter you have:

IDXGIAdapter * pDXGIAdapter = nullptr;
hr = pDXGIDevice->GetAdapter( &pDXGIAdapter );
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.