1. 목표
    1. DirectX 11을 이용하여 간단한 기본 어플리케이션을 만들어 본다
    2. 윈도우와 디바이스를 셋업해본다
  2. 참고 소스
    1. DirectX11 Sample - Tutorial 1: Direct3D Basics
  3. 사전 준비
    1. 기본 윈도우 프로그램을 작성한다
    2. DX 10 샘플중 튜터리얼 0번에 있는것을 사용
    3. 파일 첨부
  4. Direct3D 11 디바이스 셋업
    1. 3D 렌더링을 하기 위한 기본 필수 과정
    2. 먼저 세가지 오브젝트를 만들어야 한다
      1. device
      2. immediate context
        1. DX11에 새로 추가된 오브젝트
      3. swap chain
  5. 기본적인 셋업 및 오브젝트 생성 순서
    1. 1) 3D 디바이스와 Swap Chain을 생성한다
    2. 2) Swap Chain에서 백버퍼를 가져온다(2D Texture)
    3. 3) 백버퍼에 실제 렌더링할 '렌더 타겟 뷰'를 생성하여 바인딩 시킨다
    4. 4) 뷰포트를 생성한다
    5. 5) 매 프레임마다 위에서 생성한 렌더 타겟뷰에 게임 화면을 렌더링한다
    6. 6) Swap Chain을 이용하여 디바이스에 화면을 그린다
    7. Swap Chain -> Back Buffer -> Render Target View
    8. 전체 그림
  6. 3D 디바이스와 Swap Chain 생성하기
    1. Feature Level (http://vsts2010.net/118)
    2. 게임 화면은 프론트 버퍼와 백퍼로 2개의 버퍼로 이루어진다
    3. 프론트 버퍼는 우리가 건드릴 수 없고, 우선 백버퍼에 화면을 렌더링한다
    4. 기본적으로 이 2개의 버퍼가 서로 바뀌면서 게임 화면이 그려진다(Flip)
    5. 참고 이미지
    6. http://vsts2010.net/115
    7. 백버퍼를 생성한다
    8. BackBufferUsage
      1. 백퍼러를 어떤 용도로 사용할지
    9. OutputWindow
      1. 어떤 윈도우에 표시할지
    10. SampleDesc
      1. 멀티 샘플링을 사용할 것인가?
      2. Count = 1, Quality = 0 으로 설정하면 사용하지 않는다는 의미
  7. 렌더 타겟뷰 생성하기
    1. DX11의 리소스뷰의 한 타입이다
    2. 리소스 뷰는 그래픽스 파이프라인의 리소스에 바운딩된다
    3. 그래픽 파이프라인의 리소스는 타입이 없는 원시 데이터인데 이것을 편의성을 위해 리소스뷰에 연결하여 사용하는 것이다
    4. http://vsts2010.net/124
    5. 렌더 타겟 뷰는 Swap Chain의 백버퍼를 렌더 타겟처럼 사용하기 위해서 바운딩한다.
    6. Swap Chain의 백퍼버를 가져와서, 백버퍼에 바운딩해서 생성한다
    7. 렌더 타겟으로 설정한다
  8. 뷰포트 설정하기
    1. 뷰포트 크기와 깊이값의 범위를 설정한다
    2. DX9에서는 뷰포트를 설정하지 않으면 기본적으로 렌더 타겟과 같은 사이즈로 생성된다
    3. DX11에서는 기본적으로 생성되지 않는다
    4. 화면 가장 왼쪽 상단을 0, 0 으로 설정하고 렌더타겟과 같은 넓이와 높이로 지정한다
  9. 메시지 루프를 수정한다
    1. DX9와 같다
    2. 일반 윈도우 메시지 루프는 메시지 큐에 메시지가 들어오기 전까지는 작동하지 않는다
    3. 하지만 게임은 입력이 없어서 매 프레임마다 자동으로 업데이트되어야 한다
    4. 메시지 루프를 수정해서 메시지가 들어오지 않아도 매프레임마다 Render를 호출하도록 한다
  10. 렌더링 코드
    1. 생성한 렌더 타겟뷰를 클리어한다
    2. Swap Chain을 디바이스에 그린다
    3. 정확히는 Swap Chain의 백버퍼를 화면에 그리는것이다
    4. 지금 튜터리얼은 아무것도 그리지 않는다