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
);
D3D11CreateDeviceAndSwapChain 함수는 DirectX 11 api 에서 그래픽장치를 생성하고 이를 통해 응용프로그램이 화면에 이미지를 랜더링 할 수 있도록 swap chain을 생성하는데 사용된다.
swap chain: 사용자에게 프레임을 표시하는데 사용되는 버퍼의 컬렉션, 응용프로그램이 표시할 새 프레임을 제공할 때마다 , 스왑체인의 첫 버퍼가 표시되는 버퍼의 자리를 차지 , 이 프로세스를 스와핑 or 플리핑이라고 부름
Direct3D에서 스왑체인을 대표하는 인터페이스는 IDXGISwapChain이다.
매개변수
[in, optional] IDXGIAdapter pAdapter,
형식 IDXGIAdapter
디바이스를 만들때 사용할 비디오 어댑터에 대한 포인터
D3D_DRIVER_TYPE DriverType,
만들 드라이버의 유형을 나타낸다
HMODULE Software,
소프트웨어 래스터라이저를 구현하는 dll에 대한 핸들
래스터라이저 : Vertex shader 와 Geometry Shader의 출력물을 입력으로 받는 단계,
화면에 그려질 primitive(삼각형 , 선 , 점등)을 화면의 픽셀에 매핑
UINT Flags,
디버그 모드 등 옵션을 지정하는 플래그
[in, optional] const D3D_FEATURE_LEVEL *pFeatureLevels,
만들려는 기능 수준의 순서를 결정하는 D3D_FEATURE_LEVEL 배열에 대한 포인터
UINT FeatureLevels,
위의 pFeatureLevels의 요소의 수
UINT SDKVersion,
SDK 버전 : 항상 D3D11_SDK_VERSION을 사용
[in, optional] const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc,
스왑체인에 대한 초기화 매개변수를 포함하는 스왑체인에 대한 포인터
[out, optional] IDXGISwapChain **ppSwapChain,
랜더링에 사용되는 스왑체인을 나타내는 IDXGISwapChain 개체에 대한 포인터의 주소를 반환
[out, optional] D3D_FEATURE_LEVEL *pFeatureLevel,
디바이스에서 지원하는 기능 수준 배열의 첫번째 요소를 나타내는 D3D_FEATURE_LEVEL 대한 포인터를 반환, 지원되는 기능수준을 결정할 필요가없다? -> null을 입력으로 제공
[out, optional] ID3D11DeviceContext **ppImmediateContext
디바이스 컨텍스트를 나타내느 id3d11DeviceContext 개체에 대한 포인터의 주소를 반환
NULL이면 반환되지 않는다