Understanding the C++ Sample Application – 3. Controller 객체 만들기
원문과 원문에서 가져와 본 글에 사용한 영상 및 기타 자료들의 저작권은 Leap Motion에 있습니다.
Controller 객체 만들기
Leap::Controller 클래스는 프로그램과 Leap 컨트롤러 사이의 인터페이스를 제공합니다. Controller 객체를 생성하면 Controller는 PC에서 실행 중인 Leap software와 연결하고 손 추적 데이터를 Leap::Frame를 통해 받을 수 있도록 준비하게 됩니다. Controller 객체를 초기화하고 난 뒤에 Controller::frame 함수를 통해 Frame 객체에 접근할 수 있습니다.
만드는 프로그램이 단순히 루프를 돌면서 데이터를 업데이트 하는 구조일 때는, 업데이트 중 Controller::frame를 실행하는 방식으로 제작하면 됩니다. 그것이 아니라면, Leap::Listener를 서브클래싱한 listener를 controller 객체에 추가하여 사용할 수도 있습니다. 그렇게 하면 컨트롤러는 추적 데이터를 포함한 프레임이 새로 생기거나 특별한 이벤트가 발생할 때 추가한 listener의 콜백함수를 실행해 줍니다.
예제 프로그램은 main 함수 내에 Controller 객체를 만들고 서브클래싱된 Listener 객체의 인스턴스를 컨트롤러에 추가하였습니다. 이때 사용하는 함수는 Controller::addListener입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
int main() { // 예제 listner와 컨트롤러를 생성 SampleListener listener; Controller controller; // listener가 controller로부터 이벤트를 받도록 함 controller.addListener(listener); // 엔터를 입력할 때 까지 프로그램을 종료하지 않을 것. std::cout << "Press Enter to quit..." << std::endl; std::cin.get(); // 모든 작업이 끝나면 listener를 제거 controller.removeListener(listener); return 0; } |
아직 이것만으로는 순순히 컴파일되지 않을테고, Leap::Listener를 서브클래싱하여 SampleListener를 만들어야 합니다. 서브클래스 Listener는 프레임이 준비되었거나 Leap 이벤트가 발생했을 때 실행될 콜백 함수를 정의 해주어야 합니다.