DirectInput 模拟操纵杆系列

问题描述 投票:0回答:3

我使用 DirectInput 来处理输入设备,我枚举设备和每个设备上的元素。

在我的游戏手柄上使用模拟摇杆时,它们报告的值范围为 0-65535。所有类型的绝对轴都是这样吗? 如果没有:有什么方法可以找出 DX8 输入元素的 DIDEVICEOBJECTDATA::dwData (用 DIDFT_ABSAXIS 枚举)的范围?我能想到的唯一其他选择是在我的应用程序中使用一些自制的内部校准,这听起来太像 80 年代的风格了,不太真实。

windows directx enumeration directinput
3个回答
6
投票


3
投票

dev->EnumObjects(EnumElementsCallback, 0, DIDFT_ALL); BOOL CALLBACK EnumElementsCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID) { if ((dev->dwType & DIDFT_ABSAXIS) != 0) { DIPROPRANGE 系列; 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) { ... = 范围.lMin; ... = 范围.lMax; } } }



0
投票
http://www.wingmanteam.com/files/Tools/DXTweak/Readme.txt

游戏控制器驱动程序通常会报告轴位置信息 作为 0 到 655 之间的整数值传递给 DirectInput。直接输入 将这些值线性缩放到 0 到 65535。

© www.soinside.com 2019 - 2024. All rights reserved.