[DirectX12] DirectX12 공부노트 - Hello Window
포스트
취소

[DirectX12] DirectX12 공부노트 - Hello Window

Directx 12 -1.Hello Window


  • DirectX 12를 차근차근 공부해보자 시리즈의 대망의 첫번째 포스팅

Sample Project


Github from : DirectX 12 - Hello Window


Hello Window!


image

  • DirectX12에서의 Hello World는 무엇일까? 그건 바로 Window를 띄우는 것이다! Hello Window!
  • 어떻게 창이 띄워지는 지 간략하게 알아보자.


Hello Window 프로젝트 구조


1
2
3
4
5
6
7
8
9
D3D12HelloWindow
    | ---- D3D12HellowWindow.h / cpp
    | ---- d3dx12.h
    | ---- DxSample.h /cpp
    | ---- DxSampleHelper.h
    | ---- Main.cpp
    | ---- stdafx.h / cpp
    | ---- Win32Application.h /cpp

Hello Window 함수 흐름


Entry Point

1
    - Main.cpp - WinMain()


image

  • WINAPI : 윈도우 용 콘솔 앱을 제작할 때 사용하는 Windows api
  • 콘솔앱이 실질적으로 시작되는 부분!
    • HINSTANCE : 프로그램의 자체의 주소!
    • LPSTR : *char
    • nCmdShow
  • 해당 부분의 역할
    • Window Size, 타이틀바에 들어갈 메세지를 설정한 D3D12HelloWorld 오브젝트를 만든다. (띄울 창(window)의 탄생!)


Win32Application::Run(&sample, hInstance, nCmdShow)


  • 위 함수는 다음과 같은 역할을 한다.
    • 프로세스 초기화
    • 띄울 창(window) 관련 변수들 초기화 및 오브젝트 생성
    • Pipeline 초기화, Asset 초기화
    • MainLoop를 통해 매 틱당 연산을 진행


1) 프로세스 초기화 image

2) 띄울 창(window) 관련 변수들 초기화 및 오브젝트 생성 image

image2

3) Pipeline 초기화, Asset 초기화 image


4) MainLoop를 통해 매 틱당 연산을 진행

image

  • 실질적으로 이 부분에서는 WM_QUIT 메세지가 나타났는지 매 틱 확인하는 역할을 한다.
    • 이때 Callback함수인 Win32Application::WindowProc가 DispatchMessage 이후 매 틱당 호출되게 된다. 자세한 내용은 Callback함수를 참고하자.


Win32Application::WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)


  • 위 함수에서는 다음과 같은 역할을 한다.
    • 입력값에 대한 이벤트 처리
      • WM_CREATE, WM_KEYDOWN, WM_KEYUP, WM_PAINT, WM_DESTROY
    • OnUpdate(), OnRender()를 통해 매 틱당 parameter 업데이트, 업데이트된 결과 Render를 수행한다.

    image


OnRender(), OnUpdate()에서는 구체적으로 어떤 역할을 할까?


  • 이는 다음 포스팅에서 알아보자

## Reference

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.