본문 바로가기

그래픽스

[그래픽스] DirectX 초기화

D3D11CreateDevice

Device와 DeviceContext를 만드는 것이 주된 함수이다.

DirectX 버전 설정 가능.

 

DXGI_SWAP_CHAIN_DESC

스왑체인의 정보를 담는 구조체이다.

더블 버퍼링을 위해 두개의 버퍼를 교체하는데 이것을 스왑체인이라고 한다.

백버퍼 해상도, 프레임 레이트 설정 가능.

 

device->CreateRenderTargetView

RenderTargetView 설정하는 함수이다. 예제 프레임워크에서는 처음에 RenderTargetView를 SwapChain의 백버퍼로 설정한다. RenderTargetView는 여러개가 존재할 수 있으며 SwapChain의 백버퍼 말고 다른것으로도 설정 가능하다.

 

ID3D11Texture2D

백버퍼의 자료형이다.

픽셀의 색깔 값을 2차원 배열 형태로 저장하고 있다고 생각하면 된다.

 

context->RSSetViewport

RS는 Rasterization Stage의 줄임말로 Viewport를 설정하는 함수이다.

Viewport는 실제로 보이는 화면으로 D3D11_VIEWPORT구조체를 통해 Viewport의 정보들을 설정할 수 있다.

NDC좌표계에서 Viewport(래스터 화면) 좌표계로 변환하는 것을 포함한다. (RS가 붙어있는 이유)

Viewport 해상도, 깊이 설정 가능.

 

device->CreateRasterizerState

RasterizeState를 설정하는 함수이다.

D3D11_RASTERIZER_DESC 구조체를 통해 State를 설정할 수 있다.

FillMode, CullMode 설정 가능.

 

device->CreateTexture2D

depthstencilbuffer을 설정하는 함수이다. Texture는 DepthStencilBuffer을 만들기 위한 버퍼이다.

D3D11_TEXTURE2D_DESC 구조체를 통해 Texture을 읽어 깊이 정보를 저장한다.

Texture의 Usage를 설정할 수 있는데 GPU가 읽고 쓰기가 가능한지(DEFAULT), 읽기만 가능한지(IMMUTABLE),

CPU가 쓰기 가능한지 (DYNAMIC), GPU가 CPU로 보낼 수 있는지 (STAGING)설정한다.

 

device->CreateDepthStencilView

만든 텍스쳐 버퍼를 바탕으로 DepthStencilView를 만든다.

 

device->CreateDepthStencilState
DepthStencilView를 어떤 상태로 사용할지 D3D11_DEPTH_STENCIL_DESC구조체를 통해 설정한다.