Xbox One 트리거 진동 테스트 프로그램
Xbox One 컨트롤러의 트리거 진동을 테스트 할 수 있는 프로그램 입니다.
실행에 Visual Studio 2015 Runtime Library (AMD64) 가 필요하며, http://www.microsoft.com/ko-kr/download/details.aspx?id=48145 여기서 받으실 수 있습니다.
Windows 10 이 필수이며 Windows 10 미만의 OS에서는 작동하지 않습니다. 추가적으로 32비트 OS에서도 안 돌아갑니다.
첨부된 파일 안에 두개의 실행파일이 있는데,
controllertest.exe 는 Direct X 의 이벤트 핸들러를 사용한 빌드이며, 대부분의 시스템에서 작동할 겁니다.
wxWGITest.exe의 경우 wxWidgets의 이벤트 핸들러를 사용한 빌드이며 이상하게 위의 Direct X 버전과 100%동일한 코드를 사용했음에도 불과하고 Xbox One 컨트롤러의 좌측 모터가 일체 작동하지 않습니다... 그래픽 가속을 사용하지 않으니 위의 실행파일에 문제가 있다면 이 파일로 실행해 보세요.
---사용법
좌 우측 스틱은 각각 좌우 모터 속도이며 트리거의 경우 트리거를 누르시면 됩니다.
---그 외
Xinput은 Windows 10환경에서는 Deprecated 되었으며 더이상 업데이트 되지 않습니다.
Windows 10부터는 이를 위해 Windows Gaming Input 라이브러리를 사용하며, xinput과 구분되는 특징으로는
최대 8개의 컨트롤러 동시 사용 가능 (xinput 의 경우 4개)
Xbox One 컨트롤러를 위한 트리거 진동 기능이 추가 되었습니다.
wxWGITest.exe 는 아무래도 IdleEventHandler가 아니라 Timer 기반 이벤트를 써야 할 것 같긴 한데... 그 부분은 테스트용 프로그램이 완성되면 고쳐 보도록 하겠습니다. 꼭 멀티스레딩 프로그램의 데드록 버그랑 유사하네요.
- 2016-07-14 03:45 나눔 게시판 > TIS-100 *31
- 2016-05-24 23:45 이야기 > GeForce Kepler가 레거시 지원으로 *1
- 2016-04-28 07:18 이야기 > Fallout 4 Creation Kit 정식 공개 *6
- 2016-04-28 00:47 정크게시판 > Supermicro X11SAT-F / Intel Xeon E3-1275 V5 *1
- 2016-04-26 12:03 정크게시판 > 인트로 초안 *1
-
말씀하신 것 처럼 WRL (런타임 라이브러리)의 직접적인 인클루드는 불가능 하기에 WRL를 Wrapper와 ABI를 사용해서 해당 라이브러리를 감싼 후, 라이브러리를 다시 구현하는 방법을 사용했습니다.
라이브러리를 구현할 때, XInput 와 비슷하게 작성하면 코드의 재활용도 가능합니다.
이런식으로 이와 동일하게 모든 WRL 기반 라이브러리에 접근할 수 있게 됩니다.
아쉽게도 보통 작업할때 MinGW를 사용하는데 아시다시피 Microsoft는 Visual C++ 방언을 사용하다 보니 MinGW를 사용할 수 없어서 간만에 Visual Studio 좀 만져봤네요ㅋㅋ
테스트 툴 작성이 완료되면 구현체 라이브러리 소스와 함께 같이 올려보도록 하겠습니다.
기존 레거시 호환성을 최대한 살리려면 일단 Xinput으로 구현하고 libWGI는 동적 라이브러리로 구현하는 방법을 써야 할 것 같네요.
그리고 저기서 Direct X를 사용한 건 그냥 이벤트 핸들링을 위해서 사용한 거라 Win32나 OpenGL 등 Xinput 을 쓸 수 있는 곳 이라면 아무런 곳 에서 구현이 가능합니다.
멋진 프로그램 감사합니다.
http://blog.kuax.org/84
제가 이번달 초에 한 번 실험해본 내용인데, 혹시 Windows Gaming Input을 Universal App이 아닌 프로젝트에서 인클루드가 가능한가요?
다방면으로 알아보았는데 WGI를 include하려면 반드시 Universal App으로 제작해야 하는데 이럴경우 exe 배포가 안되더라구요.
본 전공이 Windows 프로그래밍은 아니라서 그냥 그런가보다하고 넘겼는데 보니까 exe파일이군요.
DirectX SDK에 포함이 된 건가요?