C++ 함수 포인터와 델리게이트 완벽 가이드
C++를 공부하다 보면 함수 포인터(Function Pointer), std::function, Delegate 같은 개념들을 접하게 됩니다. 그런데 처음에는 이런 생각이 들기도 합니다. 함수를 왜 변수처럼 전달할까? 왜 콜백(Callback) 구조가 필요한 걸까? 그리고 게임 엔진을 조금 더 깊게 보다…
Series Archive
게임 개발 및 프로그래밍에 관련된 주제에 대한 카테고리 입니다.
C++를 공부하다 보면 함수 포인터(Function Pointer), std::function, Delegate 같은 개념들을 접하게 됩니다. 그런데 처음에는 이런 생각이 들기도 합니다. 함수를 왜 변수처럼 전달할까? 왜 콜백(Callback) 구조가 필요한 걸까? 그리고 게임 엔진을 조금 더 깊게 보다…
델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 들어가며 이전 글에서는 std::function을 기반으로 멀티캐스트 델리게이트 구조를 직접 구현해봤습니다. class Delegate { public: void Add(std::function<void()> func) { functions.push_back(func);…
델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 들어가며 이전 글에서는 std::function과 lambda를 활용해서 유연한 콜백 구조를 만드는 방법을 살펴봤습니다. std::function<void()> func = []() { std::cout <<…
델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 들어가며 이전 글에서는 함수 포인터를 이용해 함수를 나중에 실행하는 콜백 구조에 대해 살펴봤습니다. void Execute(void (*callback)()) { callback(); }…
델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 들어가며 언리얼 엔진의 델리게이트, 유니티의 이벤트 시스템의 기반이 되는 개념인 함수 포인터에 대해 살펴봅니다. 게임에서 어떤 키를 눌렀을…
게임을 만들다 보면 자연스럽게 “게임 루프(Game Loop)”라는 구조를 접하게 됩니다. 캐릭터가 움직이고, 입력이 처리되고, 화면이 계속 갱신되는 이유도 결국 게임 루프가 계속 반복되기 때문입니다. 그런데 처음에는 이런 의문이 생기기도 합니다. 왜 게임은 while 문…
🚀 들어가며 이전 글에서는 C++로 게임 루프를 직접 구현하면서👉 고정 프레임(Fixed Timestep) 구조를 살펴봤습니다. 이번 글에서는 한 단계 더 나아가👉 게임 루프의 다양한 방식들을 비교해보겠습니다. 🎯 이번 글의 목표 게임 루프에는 여러 방식이 존재합니다.…
🚀 들어가며 이전 글에서는 게임 루프의 기본 개념과deltaTime이 왜 필요한지 살펴봤습니다. 👉 게임은 반복되는 루프를 통해 계속 실행된다 이번 글에서는 한 단계 더 나아가👉 C++로 실제 동작하는 게임 루프를 구현해보겠습니다. 🎯 이번 글의 목표…
🚀 들어가며 이번 글에서는 C++ 게임 루프의 기본 구조와 게임이 어떻게 계속 실행되는지를 설명합니다. 게임을 실행하면 캐릭터가 움직이고, 화면이 계속 갱신됩니다. 그렇다면 이런 질문이 자연스럽게 떠오릅니다. ❓ 게임은 어떻게 “계속” 실행되는 걸까? 이 질문에…
예제 코드 깃허브 링크 🚀 들어가며 👉 이 시리즈는 RTTI 개념에서 시작해 엔진 구조까지 단계적으로 확장됩니다. C++에서 타입을 다루는 방법은 단순한 문법 이상의 의미를 가집니다. dynamic_cast로 시작해서👉 직접 RTTI를 구현하고, 나아가 엔진 수준…