获取设备上给定输入类型的额外轴的控制器轴索引。
语法
HRESULT GetExtraAxisIndexes(
GameInputKind inputKind,
uint32_t extraAxisCount,
uint8_t* extraAxisIndexes
);
参数
inputKind _In_
类型:GameInputKind
正在请求其额外轴索引的输入类型。
extraAxisCount _In_
类型:uint32_t
额外轴的预期轴索引计数。 可以通过调用 GetExtraAxisCount 来检索此数字。
extraAxisIndexes _Out_writes_ (extraAxisCount) _
类型:uint8_t*
指向轴索引数组的指针。
返回值
类型:HRESULT
函数结果。
备注
方法 GetExtraAxisIndexes 检索设备上存在的给定输入类型的额外轴的控制器轴索引。 额外的轴是物理设备上存在的控制器轴,但不是指定输入类型的标准映射的一部分。
在调用此方法之前,应首先调用 GetExtraAxisCount 以确定有多少额外轴可用,并将该计数作为 extraAxisCount 参数传递。
下面的代码示例演示如何使用游戏板的额外轴:
bool GetGamepadExtraAxisValues(
std::vector<float>* extraAxes,
IGameInputReading* reading) noexcept
{
Mwrl::ComPtr<IGameInputDevice> device;
reading->GetDevice(&device);
uint32_t extraAxisCount = 0;
if (FAILED(device->GetExtraAxisCount(GameInputKindGamepad, &extraAxisCount)))
{
return false;
}
std::vector<uint8_t> axisIndexes(extraAxisCount);
extraAxes->resize(extraAxisCount);
if (FAILED(device->GetExtraAxisIndexes(
GameInputKindGamepad,
extraAxisCount,
axisIndexes.data())))
{
return false;
}
std::vector<float> axisStates(reading->GetControllerAxisCount());
reading->GetControllerAxisState(static_cast<uint32_t>(axisStates.size()), axisStates.data());
for (size_t i = 0; i < axisIndexes.size(); ++i)
{
if (axisIndexes[i] < axisStates.size())
{
(*extraAxes)[i] = axisStates[axisIndexes[i]];
}
}
return true;
}
要求
头文件:GameInput.h
库:gameinput.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机
另请参阅
GameInputKind
GetExtraAxisCount
GetExtraButtonIndexes
IGameInputDevice