[DirectX 11] D3D11CreateDeviceAndSwapChain

jaehyeonLee·2024년 12월 1일
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이면 반환되지 않는다

profile
이재현의 필기노트

0개의 댓글