DirectInput 아날로그 조이스틱 범위
-
20-08-2019 - |
문제
DirectInput을 사용하여 입력 장치를 처리하고 각 장치의 장치와 요소를 열거합니다.
내 게임 패드의 아날로그 스틱을 사용할 때는 0-65535 범위의 값을보고합니다. 이거야 언제나 모든 유형의 절대 축의 경우?
그렇지 않은 경우 : dx8 입력 요소의 dideviceobjectdata :: dwdata의 범위를 찾는 방법이 있습니까? 내가 생각할 수있는 유일한 옵션은 내 앱 내부에서 홈 제작 내부 교정을 사용하는 것입니다.
해결책 2
Goz가 너무 달콤하게 말하면서 나는 다음을 수행했습니다.
dev->EnumObjects(EnumElementsCallback, 0, DIDFT_ALL); BOOL CALLBACK EnumElementsCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID) { if ((dev->dwType & DIDFT_ABSAXIS) != 0) { DIPROPRANGE range; range.diph.dwSize = sizeof(DIPROPRANGE); range.diph.dwHeaderSize = sizeof(DIPROPHEADER); range.diph.dwHow = DIPH_BYID; range.diph.dwObj = dev->dwType; if (lDevice->mDIDevice->GetProperty(DIPROP_RANGE, &range.diph) == DI_OK) { ... = range.lMin; ... = range.lMax; } } }
다른 팁
GetProperty를 사용하여 범위를 얻을 수없고 적절한 디프로 프랜즈 구조를 채울 수 없습니까? DipRop_Range Guid를 사용하십시오.
에서 : http://www.wingmanteam.com/files/tools/dxtweak/readme.txt
게임 컨트롤러 드라이버는 일반적으로 축 위치 정보를 0에서 655 사이의 정수 값으로보고합니다. DirectInput은 이러한 값을 최대 0 ~ 65535까지 선형으로 스케일링합니다.
제휴하지 않습니다 StackOverflow