포스트

DirecX12 | Lecture 12. Input과 Timer (인프런)

DirectX12 강의 12. Input과 Timer를 정리한 글입니다.

DirecX12 | Lecture 12. Input과 Timer (인프런)

강의 정보 🎓


1. Input 클래스 구현

  • Input 클래스를 Engine 프로젝트에 추가한다.
  • 주요 멤버 함수:
    • GetButton(): 키가 눌리고 있는 상태 확인
    • GetButtonDown(): 처음 눌린 프레임 확인
    • GetButtonUp(): 처음 떼어진 프레임 확인
  • 매 프레임마다 Input::Update() 호출이 필요하다.

2. Engine에 Input 통합

  • Engine 클래스에 Input 멤버를 추가한다.
  • Init()에서 초기화 작업을 해줘야 한다.
  • Update()에서 매 프레임마다input->Update() 을 호출한다.

3. Game에서 입력 사용

  • Game::Update() 내에서 사용자 입력을 감지한다.
  • 예: 방향키를 누르면 오브젝트의 오프셋을 변경
1
2
if (INPUT->GetButton(KEY_TYPE::W))
    offset.y += speed; // deltaTime이 추가로 필요하다!

4. Timer 클래스 구현

  • 시간 측정을 위한 Timer 클래스를 생성한다.
  • 주요 기능:
    • Update(): 프레임 간 시간 계산
    • ShowFps(): FPS 표시

5. Engine에 Timer 통합

  • Engine 클래스에 Timer 멤버를 추가한다.
  • Init()에서 초기화
  • Update()에서 timer->Update() 호출한다.
  • FPS 표시를 위해 ShowFps() 함수를 통해 프로그램 상단에 FPS를 표시한다.

6. Delta Time 기반 움직임

  • Game::Update()에서 오프셋 변경 시 델타 타임을 반영한다.
  • 프레임 속도에 영향을 받지 않고 동일한 움직임을 보장한다.
1
2
if (INPUT->GetButton(KEY_TYPE::W))
    offset.y += speed * deltaTime;

요약

항목설명
Input 클래스키보드 입력 처리 (GetButton 등)
Timer 클래스델타 타임 및 FPS 계산
Engine 통합Init, Update, ShowFps 구현
Game 활용실시간 입력과 시간 기반 로직 구현 가능

느낀점 📝

느낀점 💡 시간 함수와 사용자의 입력은 그래도 많이 다룬 내용에다가 최소한의 코드만 작성되어있어 나중에 추가하는 작업이 있으면 좋을 것 같다. 또한 입력의 경우 커맨드 패턴과 같은 디자인 패턴도 적용해보자.

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