1. 멀티모니터에 자동으로 WPF Window 배치
2. 키넥트 2대 Color Frame 동시 사용
1.
화면 해상도 DPI에 따른 실제 디스플레이 Resolution과, GUI 프로그램에서 사용하는 Resultion이 달라 DPI에 따라 바꿔줘야함,
즉 현재 개발 환경은 맥북 프로에서 키넥트 개발을 위해서 Boot Camp로 Windows 7을 사용중인데,
Retina Display의 해상도는 2880 * 1920인데, 제어판의 디스플레이에 들어가보면 크게 보기가 설정된 것을 알 수가 있다.
이렇게 된 경우 Gui에서 pixel을 계산할 때 원래 해상도 설정에서 (만약 위처럼 크케(L)로 설정 되어있다면) 150%를 줄여서 계산해야 한다.
Win Form 프로그래밍에서는 System.Windows.Forms 가 참조에 추가되어있지 않아서 Screen 클래스를 사용하기 위해서 직접 추가해줘야 한다.
System.Windows.Forms.Screen.AllScreens.FirstOrDefault()
System.Windows.Forms.Screen.AllScreens[index]
System.Windows.Forms.Screen.PrimaryScreen
여기서 얻을 수 있는 Screen을 통해 얻는 디스플레이의 사이즈와
System.Windows.SystemParameters.PrimaryScreenHeight or Width
처럼 WPF에서 제공하는 API로 스크린의 크기를 가져오면 값이 다르다..
만약 이 값이 다르지 않았다면 각 모니터에 창을 배치하는 것을 어떻게 해야할 지 떠올리지 못했을 수도 있겠다.
왜 인지 모르겠으나 WPF 프레임워크에서는 다중 디스플레이 환경 정보를 가져올 수 있는 인터페이스를 제공하지 않는 듯하다.
2.
키넥트 두대를 하나의 PC에 꽂아 동시에 양쪽 키넥트의 ColorFrame을 보여주려고 했는데, 안되서 몇 시간을 삽질했는데, SDK 레벨에서 연산이 제대로 되지 않는지 안된다. 혹여나 같은 프로세스에서 두개의 키넥트에 접근한 것이 문제가 되는가 싶어서 다른 프로세스에서 각각 다른 키넥트에 접근했는데 여전히 똑같다.
그래서 내린 결론은 안된다 였다. 원래 FPS가 30인 것이 0으로 떨어져버린다.
키워드를 Two Kinect at one 처럼 해서 검색해보면 사례가 적긴 하지만 이전 SDK 버전이나 C++ SDK에서는 되긴 하는 것 같다.