Study/3D

게임 기본 루프 & DX11

리쥬쥬 2018. 4. 13. 20:51

1. 윈도우 생성, 디바이스 초기화


2. 메세지 루프

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MSG msg;
 
// Message Loop
while (m_bLoop)
{
    if (PeekMessage(&msg, NULL00, PM_REMOVE))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    else
    {
        Logic();
    }
}
 
return (int)msg.wParam;
cs

PeekMessage()를 통해 메세지 대기열을 확인하고, 없으면 게임 업데이트

메세지가 있으면, TranslateMessage()를 통해 메세지 변환 후, DispatchMessage()를 통해 WinProc()에 메세지 전달.


DX11 초기화

1. D3D11CreateDevice() : Device, DeviceContext 생성.

2. Feature Level 확인 : GPU가 지원 가능한 기능을 확인, 하위는 상위에 포함된다.

3. CreateSwapChain()

4. CreateRenderTargetView() : swapchain의 백버퍼를 device의 랜더 타겟으로 설정

5. CreateDepthStencilView()

6. OMSetRenderTargets() : OutputMerger로 렌더 타겟 뷰와 깊이스텐실 뷰 설정

7. RSSetViewports() : viewport 구조체 활성화

8. ClearRenderTargetView(), ClearDepthStencilView() : 랜더타겟뷰, 깊이스텐실뷰 초기화

9. Present() : swapchain(백버퍼와 프론트버퍼 스왑)이 실행되고, 실제 그려진다.