안녕하세요.
프로젝트 세팅 중에 아래와 같은 크래쉬가 발생해서 질문드립니다.
Framework 프로젝트의 D3D.cpp에서 스왑체인 생성에 실패합니다.
HRESULT D3D11CreateDeviceAndSwapChain(
[in, optional] IDXGIAdapter *pAdapter,
D3D_DRIVER_TYPE DriverType,
HMODULE Software,
UINT Flags,
[in, optional] const D3D_FEATURE_LEVEL *pFeatureLevels,
UINT FeatureLevels,
UINT SDKVersion,
[in, optional] const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc,
[out, optional] IDXGISwapChain **ppSwapChain,
[out, optional] ID3D11Device **ppDevice,
[out, optional] D3D_FEATURE_LEVEL *pFeatureLevel,
[out, optional] ID3D11DeviceContext **ppImmediateContext
);
확인 해보니 FeatureLevels 값이 1로 세팅되어 있는 경우에 크래쉬가 생깁니다. (1이 아닌 값으로 세팅하여 수업은 따라가고 있습니다.)
dx2d 강의에서는 에서는 이부분으로 featurelevels.size()로 세팅 했었습니다.
dx2d에서 featurelevels.size()로 세팅한 이유와 dx3d에서 1로 세팅 했을 떄 왜 크래쉬가 나는지 궁금합니다.

A.
D3D11CreateDeviceAndSwapChain 함수를 마우스로 클릭하시고 f1을 누르면 msdn 페이지로 넘어가서 도움말을 볼수있는데
해당 매개변수값은 윗 featureLevels 포인터로 넘겨받은 배열의 원소갯수를 넣어주는 매개변수 값입니다.
그래서 1로 하였을경우 11_1 이 지원되지않는경우 하위 11_0 , 10_1 까지도 접근이 불가하여 생성이 안되어지는걸로 보여집니다.