Directx12 를 사용하려면 GPU에 접근하는 데이터들을 정확한 구조로 만들어줘야 한다.
https://github.com/eazuooz/D3D12_YamYamCoding
https://github.com/eazuooz/D3D12_YamYamCoding/commit/5cb1a1efde3e9eed2b23a411b0a917b2df582edb
팩토리는 DirectX 12 API의 진입점입니다. 팩토리는 디바이스 및 기타 중요한 데이터 구조를 생성할 수 있는 어댑터를 찾는 데 사용할 수 있습니다.
https://learn.microsoft.com/en-us/windows/win32/api/dxgi1_6/nn-dxgi1_6-idxgifactory7
// 👋 Declare DirectX 12 Handles
IDXGIFactory4* factory;
ID3D12Debug1* debugController;
// 🏭 Create Factory
UINT dxgiFactoryFlags = 0;
#if defined(_DEBUG)
// 🐛 Create a Debug Controller to track errors
ID3D12Debug* dc;
ThrowIfFailed(D3D12GetDebugInterface(IID_PPV_ARGS(&dc)));
ThrowIfFailed(dc->QueryInterface(IID_PPV_ARGS(&debugController)));
debugController->EnableDebugLayer();
debugController->SetEnableGPUBasedValidation(true);
dxgiFactoryFlags |= DXGI_CREATE_FACTORY_DEBUG;
dc->Release();
dc = nullptr;
#endif
HRESULT result = CreateDXGIFactory2(dxgiFactoryFlags, IID_PPV_ARGS(&factory));
어댑터는 여러분의 GPU 하드웨어 속성을 제공하는 장치입니다. GPU의 이름, 제조업체, 메모리 크기 등 여러가지 정보에 접근가능하게 도와줍니다.
https://learn.microsoft.com/en-us/windows/win32/api/dxgi1_2/ns-dxgi1_2-dxgi_adapter_desc2
어댑터에는 2가지 종류가 있습니다. 소프트웨어 어댑터, 하드웨어 어댑터 입니다. 마이크로소프트는 항상 소프트웨어 어댑터를 구현해왔습니다. 이는 GPU가 없는 PC에서도실행이 가능하게끔 지원해줍니다.