2024年5月22日发(作者:蔡宝)
罗技
罗技游戏方向盘软件开发工具包概述和参考
罗技游戏方向盘软件开发工具包包含所有的附加文件,且受到知识产权法的保
护,所有罗技游戏方向盘开发包都接受了在这篇文当结尾处“罗技游戏中的许可
协议方向盘SDK许可协议”文件。如果您不同意条款和许可协议中的条件,你
必须立即返回任意的文档,附带的软件和所有其他材料都是由罗技为您提供,所
有未明确的授权,罗技拥有解释权。
概述
罗技游戏方向盘SDK能应用在控制游戏诸如各种类型的游戏控制器(USB/游戏
端口轮/游戏杆/游戏垫,力回馈启用与否)。通过使用方向盘SDK你可以确保所
有的轮子和操纵杆的功能将发挥完美。没有比在一场游戏中方向盘或摇杆的力反
馈不同而导致用户受挫和产品遭到退货更严重的情况了,请注意只有在安装了罗
技游戏软件后,SDK才将正常工作,如果想获得更多的信息请访问
/en-us/gaming 。
SDK 包
下面的文件包括:
LogitechSteeringWheelLib.h:C / C ++包含头文件的函数原型
:C#引用文件用来访问被包装的SDK
:LIB文件访问DLL导出函数(32位和64位)
:SDK函数封装(32位和64位)
要求
罗技游戏方向盘SDK可以在以下平台上使用:
Windows XP SP2(32位和64位)
Windows Vista (32-bit and 64-bit)
Windows 7 (32-bit and 64-bit)
Windows 8 (32-bit and 64-bit)
罗技游戏方向盘SDK是一个基于C语言的接口,是为使用C / C++的程序员
设计的。熟悉Windows编程也是必须的
。
使用SDK接口
使用LogitechSteeringWheel.h和访问
应用程序可以包括LogitechSteeringWheel.h并链接到(参见“样本
使用该SDK”进一步说明或样本文件夹中的示例程序)的。安装文件夹中的DLL需要是相
同的主可执行文件,或者需要在该系统环境中的路径的一部分。
多客户端同时使用SDK
该SDK只允许一个用户在任何给定时间来控制的装置。如果两个应用程序尝试初始化SDK
的设备,只有第一个将成功。第二个应用程序的初始化将失败。
该做什么和不该做什么
这些都是一些指导原则,可以帮助在你的游戏中获得'更好'的支持:
函数LogiSteeringInitialize()会试图获得你的应用程序/游戏主窗口句柄。
它可能会失败,因为当你调用该函数时的主窗口可能不会在最前面的界面,如果
LogiSteeringInitialize()返回false,初始化将会接受任何尝试下一个LogiUpdate()函数的
调用。当窗口在最前界面时和SDK可以初始化,LogiUpdate()将返回true。
SDK的使用示例
使用头文件和lib:
参考
罗技转向初始化窗口LogiSteeringInitializeWithWindow(获取窗体句柄)
bool LogiSteeringInitialize(CONST bool ignoreXInputControllers, HWND hwnd)
所述LogiSteeringInitializeWithWindow()函数生成必要的初始化,如果没有另一个实
例已经在运行。只有你从你的代码中获得窗口的句柄才能使用此功能。
参数
忽略X输入Controlllers:如果设置为true,该软件开发工具包将忽略任何的X输入控
制器
HWND:窗口句柄
返回参数
如果函数成功运行,返回为true,否则返回false
LOGI转向初始化LogiSteeringInitialize(主窗体初始化)
bool LogiSteeringInitialize(CONST bool ignoreXInputControllers)
该LogiSteeringInitialize()函数确保主窗口已经到了前面,如果这时没有其他实例运行,
则进行必要的初始化
参数
忽略X输入Controlllers:如果设置为true,该软件开发工具包将忽略任何的X输入控制
器
返回参数
如果函数成功运行,返回为true,否则返回false
如果返回是假的,那是因为你的应用程序的主窗口还没有到最前面呢。这意味着窗口处
理程序还没有被检索。
LogiUpdate(主窗口设备跟新)
bool LogiUpdate();
该LogiUpdate()查找主窗口处理程序,如果已经发现力和控制器
保持连接最新的。它被称为应用程序的每一帧。
返回参数
如果函数成功运行,返回为true,否则返回false
该函数将返回false,如果LogiSteeringInitialize()没有被调用,或者已无法找到主窗
口句柄。
LogiGetState(获得设备状态)
DIJOYSTATE2* LogiGetState(const int index);
/zh-cn/library/windows/apps/x_n
LogiGetState()返回结构体DIJOYSTATE2控制器的状态。如果想使用这个实现从
DirectInput到Microsoft Windows工作,则它需要dinput.h。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器
返回参数
DIJOYSTATE2 结构包含设备的在坐标系中的位置信息,和POVs和按钮设备信息。
注意
如果不与DirectInput一起工作,则在你的游戏或项目中可以不包括dinput.h,请注意看
一看这个功能:LogiGetStateENGINES
LogiGetStateENGINES(获得设备简化状态)
DIJOYSTATE2ENGINES* LogiGetStateENGINES(const int index);
所述LogiGetStateENGINES()是函数LogiGetState的简化版本。如果不是与
DirectInput一起工作的。它返回DIJOYSTATE2结构的简化版本,称为
DIJOYSTATE2ENGINES。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
返回参数
DIJOYSTATE2 结构包含设备的在坐标系中的位置信息,和POVs和按钮设备信息有关
为了更加细致,看看在头文件LogiSeeringWheel.h的信息。
LogiGetFriendlyProductName(获取设备名)
wchar_t* LogiGetFriendlyProductName(const int index);
The LogiGetFriendlyProductName () 函数获得设备的名称。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二
个游戏控制器
返回参数
字符串中包含设备的友好产品名称。
LogiIsConnected(设备是否已连接)
bool LogiIsConnected(const int index);
该LogiIsConnected()函数检查游戏控制器是否连接在指定索引处
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器
返回参数
返回true,如果设备连接到特定的索引,否则返回false。
LogiIsDeviceConnected(是否连接到特定的设备)
bool LogiIsDeviceConnected(const int index, const int deviceType);
该LogiIsConnected()函数检查指定的设备是否连接在索引处
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
设备类型:设备检查的类型。可能的类型:
o LOGI_DEVICE_TYPE_WHEEL
o LOGI_DEVICE_TYPE_JOYSTICK
o LOGI_DEVICE_TYPE_GAMEPAD
o LOGI_DEVICE_TYPE_OTHER
返回参数
返回true,如果设备连接到特定的索引,否则返回false。
LogiIsManufacturerConnected (制造商设备检测)
bool LogiIsManufacturerConnected(const int index, const int manufacturerName);
LogiIsManufacturerConnected()函数检查连接成功的设备索引是否由manufacturerName
指定的制造商生成。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
manufacturerName:制造设备的制造商的名称,可能的类型主要有:
o LOGI_ MANUFACTURER_LOGITECH
o LOGI_ MANUFACTURER_MICROSOFT
o LOGI_ MANUFACTURER_OTHER
返回参数
如果特定生产商的PC控制器已经连接上,返回真,否则返回假
LogiIsModelConnected(设备型号检测)
bool LogiIsModelConnected(const int index, const int modelName);
该LogiIsModelConnected()函数检查设备连接的索引是否是指定型号
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
型号名:设备的型号名称,可能的型号名称:
o LOGI_MODEL_G27
o LOGI _MODEL_G25
o LOGI _MODEL_MOMO_RACING
o LOGI _MODEL_MOMO_FORCE
o LOGI _MODEL_DRIVING_FORCE_PRO
o LOGI _MODEL_DRIVING_FORCE
o LOGI _MODEL_NASCAR_RACING_WHEEL
o LOGI _MODEL_FORMULA_FORCE
o LOGI _MODEL_FORMULA_FORCE_GP
o LOGI _MODEL_FORCE_3D_PRO
o LOGI _MODEL_EXTREME_3D_PRO
o LOGI _MODEL_FREEDOM_24
o LOGI _MODEL_ATTACK_3
o LOGI _MODEL_FORCE_3D
o LOGI _MODEL_STRIKE_FORCE_3D
o LOGI _MODEL_RUMBLEPAD
o LOGI _MODEL_RUMBLEPAD_2
o LOGI _MODEL_CORDLESS_RUMBLEPAD_2
o LOGI _MODEL_CORDLESS_GAMEPAD
o LOGI _MODEL_DUAL_ACTION_GAMEPAD
o LOGI _MODEL_PRECISION_GAMEPAD_2
o LOGI _MODEL_CHILLSTREAM
返回参数
如果指定型号的控制器已经连接,返回为true,否则返回false
LogiButtonTriggered(按键检测)
bool LogiButtonTriggered(const int index, const int buttonNbr);
该LogiButtonTriggered()函数检查设备连接的索引是否是当前的指定触发按钮
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
buttonNbr : 我们想要检查的按钮的号数,可能的号数为:从0到127
返回参数
如果按钮已经触发返回为true,否则返回false
LogiButtonReleased(按键释放)
bool LogiButtonReleased(const int index, const int buttonNbr);
LogiButtonReleased ()函数检查连接在设备上的索引是否已经释放指定的按钮。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
buttonNbr : 我们想要检查的按钮的号数,可能的号数为:从0到127
返回参数
如果按钮已经触发返回为true,否则返回false
LogiButtonIsPressed
bool LogiButtonIsPressed(const int index, const int buttonNbr);
LogiButtonIsPressed () 函数检查连接在设备上的索引是否是当前正在被按下的指定按
钮。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
buttonNbr : 我们想要检查的按钮的号数,可能的号数为:从0到127
返回参数
如果按钮已经触发返回为true,否则返回false
LogiGenerateNonLinearValues(LOGI生成非线性值)
bool LogiGenerateNonLinearValues(const int index, const int nonLinCoeff);
这个LogiGenerateNonLinearValues () 函数为游戏控制器轴生成非线性参数。游戏轮/摇
杆/游戏手柄和真正的方向盘具有非常不同的行为。采用单匝车轮的理由是它们仅需要做到
四分之三转锁来锁定的,真正的汽车采用3转。
这直接影响到转向比(15:1到20:1对于真正的汽车来说,但对于游戏轮只有4:1).
操纵杆和游戏手柄比真正的方向盘拥有更短的移动范围。因为这很小的转向传动比或短距离
的移动范围,游戏轮/游戏杆/游戏垫会高度敏感,这可能使游戏操作非常困难。尤其是在以
一个特定速度(倾向于前进或后退的速度)行驶在直线路段的时候,可能更加难。解决这种
问题的一种方法就是使用一个灵敏度曲线。这是一条依靠速度来定义的游戏控制器灵敏度的
曲线,这种类型的曲线通常用于游戏手柄,以弥补其很低的物理动作范围。运用这种曲线的
作用是当汽车以高速行驶时汽车的轮胎转动的幅度会比汽车移动速度很慢时的幅度小。例如
汽车的车轮可能转动60度来锁定,在较低的速度的时候,但只要10度锁来锁定,在更高的
速度的时候。如果你计算10度锁定时的转向比,你会发现,如果你通过转180度来锁定一
个方向盘,锁定比率等于180/10=18,这相当于一辆真正汽车的转向比。如果灵敏度曲线已
经车轮/操纵杆中使用,再加入非线性曲线可能不必要的。但你可能发现即使应用敏感度曲
线后,车子在一条直线上行驶的很快的时候,还是感觉有点颠簸。这可能是因为在你的游戏
中,你需要10度以上的锁去锁住,即使在高速度时。或者,汽车是以非常高的速度在行驶,
以至于以一个普通的转向比也不能消除这么高的灵敏度,在这一点上的最好方法是添加一个
非线性曲线在灵敏度曲线的顶部。有着正nonlincoeff的非线性曲线的作用是围绕在中心位
置的车轮或游戏杆将会变得不是那么敏感。然而,在锁定向左或向右位置时汽车的车轮会转
过和没有非线性曲线时相同的量,因此,汽车在一条直线上行驶时变得更加容易控制,并且
游戏操作将会得到提高。
也有这样的情况出现,车轮的感觉灵敏度不够,在这种情况下可能要增加一条具有逆效
应的非线性曲线(使围绕在中心位置的转向更加敏感)通过使用负值nonLinCoeff来改善,
这种方法让你定义一个非线性系数,这个系数决定这条曲线的作用的强弱,当运行这种方法
时,将会以阵列的形式产生一个映射表,对于这个阵列中的每1024个元素,会有其可以用
作车轮/操纵杆的轴线位置上的相应的非线性值,而不是原始的值。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器
nonLinCoeff:采用的非线性程度的一个值,范围从-100到100,0表示是线性曲线,100
表示最大的非线性曲线及中心位置具有低的敏感度,-100表示最大的非线性曲线且中心位
置具有高的敏感度。
返回参数
成功则返回true,否则返回false
LogiGetNonLinearValue(获得非线性值)
int LogiGetNonLinearValue(const int index, const int inputValue);
LogiGetNonLinearValue () 函数返回值从一个先前产生的非线性值组成的表格中的数,这
个数可以看成是方向盘的响应。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
inputValue:值的范围是-32768到32767,对应轴的原始值。
返回参数
值的范围是-32768到32767之间,对应先前用GenerateNonLinearValues()函数设定的
非线性水平值
LogiHasForceFeedback(是否含有力反馈)
bool LogiHasForceFeedback(const int index);
这个The LogiHasForceFeedback () 函数检查索引控制器是否有力反馈。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
如果设备能进行力反馈则返回true,否则返回false。
LogiIsPlaying(力反馈是否发挥作用)
bool LogiIsPlaying(const int index, const int forceType);
这个 LogiIsPlaying () 函数检查是否有某个力正在发挥作用。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器。
力的类型:
o - LOGI_FORCE_SPRING
o - LOGI_FORCE_CONSTANT
o - LOGI_FORCE_DAMPER
o - LOGI_FORCE_SIDE_COLLISION
o - LOGI_FORCE_FRONTAL_COLLISION
o - LOGI_FORCE_DIRT_ROAD
o - LOGI_FORCE_BUMPY_ROAD
o - LOGI_FORCE_SLIPPERY_ROAD
o - LOGI_FORCE_SURFACE_EFFECT
o - LOGI_FORCE_CAR_AIRBORNE
返回参数
如果力正在发生作用则返回true,否则返回false
LogiPlaySpringForce(力作用)
bool LogiPlaySpringForce(const int index, const int offsetPercentage, const int
saturationPercentage, const int coefficientPercentage);
这个LogiPlaySpringForce () 函数作用是表示弹簧力开始
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游戏
控制器。
Offset Percentage:指定的弹簧力作用的中心,有效范围为-100至100。指定0为弹簧的中心
位置。超出此范围的任何值弹簧将静止不动。
saturationPercentage:指定弹力效果饱和的水平。经过中心位置一定的偏差后,饱和水平保
持不变,这相当于一个幅度。有效范围为0到100,任何值高于100的值弹簧将静止不动。
coefficientPercentage - 表示效果强度增加的斜率和中心位置处的条件有关。值越高意味着,
到达饱和水平越快。有效范围为-100到100,任何值超出有效范围弹簧将静止不动。
返回参数
成功返回true,否则返回false
注意
动态的弹簧力将在X轴上发挥作用,如果游戏杆已经被连接,则所有由方向盘SDK产
生的力都作用X轴上,另外会有一个恒定的弹簧在Y轴上。
LogiStopSpringForce
bool LogiStopSpringForce(const int index);
这个 LogiStopSpringForce ()函数停止弹簧力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlayConstantForce
bool LogiPlayConstantForce(const int index, const int magnitudePercentage);
这个LogiPlayConstantForce()函数产生恒力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage:指定的恒力作用的大小。负值表示力作用的方向相反。有效范围
为是-100到100,任何超出有效范围的值都将不产生作用。
返回参数
成功返回true,否则返回false
注意
如果采用物理引擎的值来不断更新恒力的值,此时效果最好,将方向盘和游戏杆通过一
个矢量力来和汽车引擎绑定在一起,这会产生一个弹簧的效果,一个滑动的效果,产生汽车
惯性的感觉,依赖物理引擎,它也应该产生侧面的碰撞效果(汽车的一个面撞到墙壁后,轮
或操纵杆应在相反的方向颤动),这个矢量力可以根据前轮胎测量的横向力来计算。这个矢
量力应该为0,当停止或是行驶在直线的时候。当转弯或是通过倾斜的表面时,这个矢量力
应该以成比例的方式增加。
LogiStopConstantForce(终止恒力作用)
bool LogiStopConstantForce(const int index);
这个LogiStopConstantForce () 函数停止恒力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlayDamperForce
bool LogiPlayDamperForce(const int index, const int coefficientPercentage);
这个 LogiPlayDamperForce () 函数产生阻尼力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
coefficientPercentage :表示效果强度增加的斜率和中心位置处的条件有关。值越高意味
着,到达饱和水平越快。有效范围为-100到100,任何值超出有效范围弹簧将静止不动。-100
模拟一个很平滑的效果,100使得轮子和操纵杆很难移动,模拟车子停止或是陷在泥潭里。
返回参数
成功返回true,否则返回false
注意
模拟那些很难开的路面(在泥里,车停止),或是湿滑路面(雪,或是冰面)
LogiStopDamperForce(停止作用力)
bool LogiStopDamperForce(const int index);
这个LogiStopDamperForce () 停止阻尼力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlaySideCollisionForce(侧向碰撞力)
bool LogiPlaySideCollisionForce(const int index, const int magnitudePercentage);
这个LogiPlaySideCollisionForce () 函数启动索引控制器的侧面碰撞力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage :指定的侧面碰撞力作用的大小。负值表示力的方向相反。有效范
围为是-100到100,任何超出有效范围的值弹簧都将不起作用
返回参数
成功返回true,否则返回false
注意
如果你已经采用了由物理引擎绑定的矢量力来作为恒力,则不需要再额外采用侧面碰撞
力,因为由于物理引擎,侧面碰撞力会自动地被恒力影响到。
LogiPlayFrontalCollisionForce(正向碰撞力)
bool LogiPlayFrontalCollisionForce(const int index, const int magnitudePercentage);
这个LogiPlayFrontalCollisionForce () 启动在索引控制器正面的碰撞力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage:指定的正面碰撞力作用的大小。有效范围从0到100,高于100的值
将不会产生作用。
返回参数
成功返回true,否则返回false
LogiPlayDirtRoadEffect(土路效果)
bool LogiPlayDirtRoadEffect(const int index, const int magnitudePercentage);
这个LogiPlayDirtRoadEffect () f函数开启土路效果
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage:指土路影响的程度。有效范围为0到100,高于100不起作用。
返回参数
成功返回true,否则返回false
LogiStopDirtRoadEffect
bool LogiStopDirtRoadEffect(const int index);
这个LogiStopDirtRoadEffect () 停止土路效果(模拟)
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlayBumpyRoadEffect(颠簸路面)
bool LogiPlayBumpyRoadEffect(const int index, const int magnitudePercentage);
这个LogiPlayBumpyRoadEffect () 函数模拟颠簸路面的影响效果
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage :表示颠簸路面影响程度,有效范围从0到100,任何超出100的值
都将不会起作用。
返回参数
成功返回true,否则返回false
LogiStopBumpyRoadEffect
bool LogiStopBumpyRoadEffect (const int index);
这个函数停止模拟颠簸路面的影响
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlaySlipperyRoadEffect(平滑路面)
bool LogiPlaySlipperyRoadEffect(const int index, const int magnitudePercentage);
这个函数模拟平滑路面的影响效果。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage :表示平滑路面影响程度,有效范围从0到100,100表示最平滑的
效果
返回参数
成功返回true,否则返回false
LogiStopSlipperyRoadEffect
bool LogiStopSlipperyRoadEffect (const int index);
这个函数作用是停止模拟平滑路面的效果。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlaySurfaceEffect(路面响应效果)
bool LogiPlaySurfaceEffect(const int index, const int type, const int
magnitudePercentage, const int period);
这个函数表示表面影响的效果
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
类型:特定的类型的力影响,可以是以下数值:
o LOGI_PERIODICTYPE_SINE
o LOGI_PERIODICTYPE_SQUARE
o LOGI_PERIODICTYPE_TRIANGLE
magnitudePercentage:表示表面影响力的大小,有效范围从0到100,数值超过100则不
会起作用。
Period:表示周期力作用的期限,值是以毫秒测量的周期函数一个全周期的持续时间。
一个比较好的范围是从20ms(沙子)到120ms(木桥或是鹅卵石),作为一个表面的影响周
期不能大过150ms。
返回参数
成功返回true,否则返回false
LogiStopSurfaceEffectEffect
bool LogiStopSurfaceEffect (const int index);
这个函数停止表面的影响
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlayCarAirborne(空降效果模拟)
bool LogiPlayCarAirborne(const int index);
这个函数模拟汽车空降的效果。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiStopCarAirborne
bool LogiStopCarAirborne(const int index);
这个 LogiStopCarAirborne () 函数模拟汽车在路面腾空时的效果。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlaySoftstopForce(软停止力)
bool LogiPlaySoftstopForce(const int index, const int usableRangePercentage);
这个LogiPlaySoftstopForce () 函数表示汽车soft停止时的效果。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
usableRangePercentage:表示在soft停止力影响百分数中的死区
返回参数
成功返回true,否则返回false
LogiStopSoftstopForce
bool LogiStopSoftstopForce(const int index);
这个 LogiStopSoftstopForce () 停止the soft stop force.
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiSetPreferredControllerProperties(设置前轮属性)
bool LogiSetPreferredControllerProperties(const LogiControllerPropertiesData
properties);
该LogiSetPreferredControllerProperties()设置首选轮的属性。
参数
属性:包含的所有字段结构都要进行设置。
返回参数
成功返回true,否则返回false
LogiGetCurrentControllerProperties (获得当前控制器属性)
bool LogiGetCurrentControllerProperties(const int index,
LogiControllerPropertiesData& properties);
这个LogiGetCurrentControllerProperties () 根据当前控制器的参数填充性能参数
参数
索引:控制器的索引
properties : 接收当前参数
返回参数
成功返回true,否则返回false
LogiGetShifterMode(获得换挡模式)
int LogiGetShifterMode(const int index);
该LogiGetShifterMode()获取当前的换档模式(门或顺序)
参数
索引:控制器的索引
返回参数
1,如果移位器门,0如果移位是连续的,-1如有不明
LogiSetOperatingRange(设置控制器作用范围)
bool LogiSetOperatingRange(const int index, const int range);
所述LogiSetOperatingRange()用范围参数设置控制器的操作范围。
参数
索引:控制器的索引
范围:被设置操作范围
返回参数
成功返回true,否则返回false
LogiGetOperatingRange
bool LogiGetOperatingRange(const int index, int& range);
所述LogiGetOperatingRange()函数根据当前控制器的操作范围获得控制器的范围参数。
参数
索引:控制器的索引
范围:接收当前控制器的操作范围(是一个整数?)
返回参数
成功返回true,否则返回false
LogiPlayLeds(设置显示灯)
bool LogiPlayLeds(const int index, const float currentRPM, const float
rpmFirstLedTurnsOn, const float rpmRedLine);
该函数启动控制器的led。
参数
索引:控制器的索引
currentRPM:当前RPM
rpmFirstLedTurnsOn :当第一个led打开时的 RPM
rpmRedLine :低于这个值所有的led会打开,高于这个值,所有的led开始闪烁。
返回参数
成功返回true,否则返回false
LogiSetOperatingRangeDInput
bool LogiSetOperatingRangeDInput(const LPDIRECTINPUTDEVICE8
deviceHandle, const int range);
所述LogiSetOperatingRangeDInput()用范围参数设置控制器的操作范围
参数
deviceHandle: DInput 游戏控制器的手柄
range :被设置的参数范围
返回参数
成功返回true,否则返回false
注意
这个函数可以使用不管SDK是否已经被初始化(即可以在没有LogiSteeringInitialize函
数下使用)
LogiGetOperatingRangeDInput
bool LogiGetOperatingRangeDInput(const LPDIRECTINPUTDEVICE8
deviceHandle, int& range);
所述函数根据当前控制器的操作范围获得控制器的范围参数。
参数
deviceHandle: DInput 游戏控制器的手柄
范围:接收当前控制器的操作范围(是一个整数?)
返回参数
成功返回true,否则返回false
注意
这个函数可以使用不管SDK是否已经被初始化(即可以在没有LogiSteeringInitialize
函数下使用)
LogiPlayLedsDInput
bool LogiPlayLedsDInput(const LPDIRECTINPUTDEVICE8 deviceHandle, const
float currentRPM, const float rpmFirstLedTurnsOn, const float rpmRedLine);
该函数启动控制器的led。
参数
deviceHandle: DInput 游戏控制器的手柄
currentRPM:当前RPM
rpmFirstLedTurnsOn :当第一个led打开时的 RPM
rpmRedLine :低于这个值所有的led会打开,高于这个值,所有的led开始闪烁。
返回参数
成功返回true,否则返回false
注意
这个函数可以使用不管SDK是否已经被初始化(即可以在没有LogiSteeringInitialize函
数下使用)
LogiSteeringShutdown
bool LogiSteeringShutdown();
该LogiSteeringShutdown()关闭SDK和注销控制器对象
返回参数
这个函数没有返回参数
4613
2024年5月22日发(作者:蔡宝)
罗技
罗技游戏方向盘软件开发工具包概述和参考
罗技游戏方向盘软件开发工具包包含所有的附加文件,且受到知识产权法的保
护,所有罗技游戏方向盘开发包都接受了在这篇文当结尾处“罗技游戏中的许可
协议方向盘SDK许可协议”文件。如果您不同意条款和许可协议中的条件,你
必须立即返回任意的文档,附带的软件和所有其他材料都是由罗技为您提供,所
有未明确的授权,罗技拥有解释权。
概述
罗技游戏方向盘SDK能应用在控制游戏诸如各种类型的游戏控制器(USB/游戏
端口轮/游戏杆/游戏垫,力回馈启用与否)。通过使用方向盘SDK你可以确保所
有的轮子和操纵杆的功能将发挥完美。没有比在一场游戏中方向盘或摇杆的力反
馈不同而导致用户受挫和产品遭到退货更严重的情况了,请注意只有在安装了罗
技游戏软件后,SDK才将正常工作,如果想获得更多的信息请访问
/en-us/gaming 。
SDK 包
下面的文件包括:
LogitechSteeringWheelLib.h:C / C ++包含头文件的函数原型
:C#引用文件用来访问被包装的SDK
:LIB文件访问DLL导出函数(32位和64位)
:SDK函数封装(32位和64位)
要求
罗技游戏方向盘SDK可以在以下平台上使用:
Windows XP SP2(32位和64位)
Windows Vista (32-bit and 64-bit)
Windows 7 (32-bit and 64-bit)
Windows 8 (32-bit and 64-bit)
罗技游戏方向盘SDK是一个基于C语言的接口,是为使用C / C++的程序员
设计的。熟悉Windows编程也是必须的
。
使用SDK接口
使用LogitechSteeringWheel.h和访问
应用程序可以包括LogitechSteeringWheel.h并链接到(参见“样本
使用该SDK”进一步说明或样本文件夹中的示例程序)的。安装文件夹中的DLL需要是相
同的主可执行文件,或者需要在该系统环境中的路径的一部分。
多客户端同时使用SDK
该SDK只允许一个用户在任何给定时间来控制的装置。如果两个应用程序尝试初始化SDK
的设备,只有第一个将成功。第二个应用程序的初始化将失败。
该做什么和不该做什么
这些都是一些指导原则,可以帮助在你的游戏中获得'更好'的支持:
函数LogiSteeringInitialize()会试图获得你的应用程序/游戏主窗口句柄。
它可能会失败,因为当你调用该函数时的主窗口可能不会在最前面的界面,如果
LogiSteeringInitialize()返回false,初始化将会接受任何尝试下一个LogiUpdate()函数的
调用。当窗口在最前界面时和SDK可以初始化,LogiUpdate()将返回true。
SDK的使用示例
使用头文件和lib:
参考
罗技转向初始化窗口LogiSteeringInitializeWithWindow(获取窗体句柄)
bool LogiSteeringInitialize(CONST bool ignoreXInputControllers, HWND hwnd)
所述LogiSteeringInitializeWithWindow()函数生成必要的初始化,如果没有另一个实
例已经在运行。只有你从你的代码中获得窗口的句柄才能使用此功能。
参数
忽略X输入Controlllers:如果设置为true,该软件开发工具包将忽略任何的X输入控
制器
HWND:窗口句柄
返回参数
如果函数成功运行,返回为true,否则返回false
LOGI转向初始化LogiSteeringInitialize(主窗体初始化)
bool LogiSteeringInitialize(CONST bool ignoreXInputControllers)
该LogiSteeringInitialize()函数确保主窗口已经到了前面,如果这时没有其他实例运行,
则进行必要的初始化
参数
忽略X输入Controlllers:如果设置为true,该软件开发工具包将忽略任何的X输入控制
器
返回参数
如果函数成功运行,返回为true,否则返回false
如果返回是假的,那是因为你的应用程序的主窗口还没有到最前面呢。这意味着窗口处
理程序还没有被检索。
LogiUpdate(主窗口设备跟新)
bool LogiUpdate();
该LogiUpdate()查找主窗口处理程序,如果已经发现力和控制器
保持连接最新的。它被称为应用程序的每一帧。
返回参数
如果函数成功运行,返回为true,否则返回false
该函数将返回false,如果LogiSteeringInitialize()没有被调用,或者已无法找到主窗
口句柄。
LogiGetState(获得设备状态)
DIJOYSTATE2* LogiGetState(const int index);
/zh-cn/library/windows/apps/x_n
LogiGetState()返回结构体DIJOYSTATE2控制器的状态。如果想使用这个实现从
DirectInput到Microsoft Windows工作,则它需要dinput.h。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器
返回参数
DIJOYSTATE2 结构包含设备的在坐标系中的位置信息,和POVs和按钮设备信息。
注意
如果不与DirectInput一起工作,则在你的游戏或项目中可以不包括dinput.h,请注意看
一看这个功能:LogiGetStateENGINES
LogiGetStateENGINES(获得设备简化状态)
DIJOYSTATE2ENGINES* LogiGetStateENGINES(const int index);
所述LogiGetStateENGINES()是函数LogiGetState的简化版本。如果不是与
DirectInput一起工作的。它返回DIJOYSTATE2结构的简化版本,称为
DIJOYSTATE2ENGINES。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
返回参数
DIJOYSTATE2 结构包含设备的在坐标系中的位置信息,和POVs和按钮设备信息有关
为了更加细致,看看在头文件LogiSeeringWheel.h的信息。
LogiGetFriendlyProductName(获取设备名)
wchar_t* LogiGetFriendlyProductName(const int index);
The LogiGetFriendlyProductName () 函数获得设备的名称。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二
个游戏控制器
返回参数
字符串中包含设备的友好产品名称。
LogiIsConnected(设备是否已连接)
bool LogiIsConnected(const int index);
该LogiIsConnected()函数检查游戏控制器是否连接在指定索引处
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器
返回参数
返回true,如果设备连接到特定的索引,否则返回false。
LogiIsDeviceConnected(是否连接到特定的设备)
bool LogiIsDeviceConnected(const int index, const int deviceType);
该LogiIsConnected()函数检查指定的设备是否连接在索引处
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
设备类型:设备检查的类型。可能的类型:
o LOGI_DEVICE_TYPE_WHEEL
o LOGI_DEVICE_TYPE_JOYSTICK
o LOGI_DEVICE_TYPE_GAMEPAD
o LOGI_DEVICE_TYPE_OTHER
返回参数
返回true,如果设备连接到特定的索引,否则返回false。
LogiIsManufacturerConnected (制造商设备检测)
bool LogiIsManufacturerConnected(const int index, const int manufacturerName);
LogiIsManufacturerConnected()函数检查连接成功的设备索引是否由manufacturerName
指定的制造商生成。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
manufacturerName:制造设备的制造商的名称,可能的类型主要有:
o LOGI_ MANUFACTURER_LOGITECH
o LOGI_ MANUFACTURER_MICROSOFT
o LOGI_ MANUFACTURER_OTHER
返回参数
如果特定生产商的PC控制器已经连接上,返回真,否则返回假
LogiIsModelConnected(设备型号检测)
bool LogiIsModelConnected(const int index, const int modelName);
该LogiIsModelConnected()函数检查设备连接的索引是否是指定型号
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
型号名:设备的型号名称,可能的型号名称:
o LOGI_MODEL_G27
o LOGI _MODEL_G25
o LOGI _MODEL_MOMO_RACING
o LOGI _MODEL_MOMO_FORCE
o LOGI _MODEL_DRIVING_FORCE_PRO
o LOGI _MODEL_DRIVING_FORCE
o LOGI _MODEL_NASCAR_RACING_WHEEL
o LOGI _MODEL_FORMULA_FORCE
o LOGI _MODEL_FORMULA_FORCE_GP
o LOGI _MODEL_FORCE_3D_PRO
o LOGI _MODEL_EXTREME_3D_PRO
o LOGI _MODEL_FREEDOM_24
o LOGI _MODEL_ATTACK_3
o LOGI _MODEL_FORCE_3D
o LOGI _MODEL_STRIKE_FORCE_3D
o LOGI _MODEL_RUMBLEPAD
o LOGI _MODEL_RUMBLEPAD_2
o LOGI _MODEL_CORDLESS_RUMBLEPAD_2
o LOGI _MODEL_CORDLESS_GAMEPAD
o LOGI _MODEL_DUAL_ACTION_GAMEPAD
o LOGI _MODEL_PRECISION_GAMEPAD_2
o LOGI _MODEL_CHILLSTREAM
返回参数
如果指定型号的控制器已经连接,返回为true,否则返回false
LogiButtonTriggered(按键检测)
bool LogiButtonTriggered(const int index, const int buttonNbr);
该LogiButtonTriggered()函数检查设备连接的索引是否是当前的指定触发按钮
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
buttonNbr : 我们想要检查的按钮的号数,可能的号数为:从0到127
返回参数
如果按钮已经触发返回为true,否则返回false
LogiButtonReleased(按键释放)
bool LogiButtonReleased(const int index, const int buttonNbr);
LogiButtonReleased ()函数检查连接在设备上的索引是否已经释放指定的按钮。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
buttonNbr : 我们想要检查的按钮的号数,可能的号数为:从0到127
返回参数
如果按钮已经触发返回为true,否则返回false
LogiButtonIsPressed
bool LogiButtonIsPressed(const int index, const int buttonNbr);
LogiButtonIsPressed () 函数检查连接在设备上的索引是否是当前正在被按下的指定按
钮。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器
buttonNbr : 我们想要检查的按钮的号数,可能的号数为:从0到127
返回参数
如果按钮已经触发返回为true,否则返回false
LogiGenerateNonLinearValues(LOGI生成非线性值)
bool LogiGenerateNonLinearValues(const int index, const int nonLinCoeff);
这个LogiGenerateNonLinearValues () 函数为游戏控制器轴生成非线性参数。游戏轮/摇
杆/游戏手柄和真正的方向盘具有非常不同的行为。采用单匝车轮的理由是它们仅需要做到
四分之三转锁来锁定的,真正的汽车采用3转。
这直接影响到转向比(15:1到20:1对于真正的汽车来说,但对于游戏轮只有4:1).
操纵杆和游戏手柄比真正的方向盘拥有更短的移动范围。因为这很小的转向传动比或短距离
的移动范围,游戏轮/游戏杆/游戏垫会高度敏感,这可能使游戏操作非常困难。尤其是在以
一个特定速度(倾向于前进或后退的速度)行驶在直线路段的时候,可能更加难。解决这种
问题的一种方法就是使用一个灵敏度曲线。这是一条依靠速度来定义的游戏控制器灵敏度的
曲线,这种类型的曲线通常用于游戏手柄,以弥补其很低的物理动作范围。运用这种曲线的
作用是当汽车以高速行驶时汽车的轮胎转动的幅度会比汽车移动速度很慢时的幅度小。例如
汽车的车轮可能转动60度来锁定,在较低的速度的时候,但只要10度锁来锁定,在更高的
速度的时候。如果你计算10度锁定时的转向比,你会发现,如果你通过转180度来锁定一
个方向盘,锁定比率等于180/10=18,这相当于一辆真正汽车的转向比。如果灵敏度曲线已
经车轮/操纵杆中使用,再加入非线性曲线可能不必要的。但你可能发现即使应用敏感度曲
线后,车子在一条直线上行驶的很快的时候,还是感觉有点颠簸。这可能是因为在你的游戏
中,你需要10度以上的锁去锁住,即使在高速度时。或者,汽车是以非常高的速度在行驶,
以至于以一个普通的转向比也不能消除这么高的灵敏度,在这一点上的最好方法是添加一个
非线性曲线在灵敏度曲线的顶部。有着正nonlincoeff的非线性曲线的作用是围绕在中心位
置的车轮或游戏杆将会变得不是那么敏感。然而,在锁定向左或向右位置时汽车的车轮会转
过和没有非线性曲线时相同的量,因此,汽车在一条直线上行驶时变得更加容易控制,并且
游戏操作将会得到提高。
也有这样的情况出现,车轮的感觉灵敏度不够,在这种情况下可能要增加一条具有逆效
应的非线性曲线(使围绕在中心位置的转向更加敏感)通过使用负值nonLinCoeff来改善,
这种方法让你定义一个非线性系数,这个系数决定这条曲线的作用的强弱,当运行这种方法
时,将会以阵列的形式产生一个映射表,对于这个阵列中的每1024个元素,会有其可以用
作车轮/操纵杆的轴线位置上的相应的非线性值,而不是原始的值。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器
nonLinCoeff:采用的非线性程度的一个值,范围从-100到100,0表示是线性曲线,100
表示最大的非线性曲线及中心位置具有低的敏感度,-100表示最大的非线性曲线且中心位
置具有高的敏感度。
返回参数
成功则返回true,否则返回false
LogiGetNonLinearValue(获得非线性值)
int LogiGetNonLinearValue(const int index, const int inputValue);
LogiGetNonLinearValue () 函数返回值从一个先前产生的非线性值组成的表格中的数,这
个数可以看成是方向盘的响应。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
inputValue:值的范围是-32768到32767,对应轴的原始值。
返回参数
值的范围是-32768到32767之间,对应先前用GenerateNonLinearValues()函数设定的
非线性水平值
LogiHasForceFeedback(是否含有力反馈)
bool LogiHasForceFeedback(const int index);
这个The LogiHasForceFeedback () 函数检查索引控制器是否有力反馈。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
如果设备能进行力反馈则返回true,否则返回false。
LogiIsPlaying(力反馈是否发挥作用)
bool LogiIsPlaying(const int index, const int forceType);
这个 LogiIsPlaying () 函数检查是否有某个力正在发挥作用。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个
游戏控制器。
力的类型:
o - LOGI_FORCE_SPRING
o - LOGI_FORCE_CONSTANT
o - LOGI_FORCE_DAMPER
o - LOGI_FORCE_SIDE_COLLISION
o - LOGI_FORCE_FRONTAL_COLLISION
o - LOGI_FORCE_DIRT_ROAD
o - LOGI_FORCE_BUMPY_ROAD
o - LOGI_FORCE_SLIPPERY_ROAD
o - LOGI_FORCE_SURFACE_EFFECT
o - LOGI_FORCE_CAR_AIRBORNE
返回参数
如果力正在发生作用则返回true,否则返回false
LogiPlaySpringForce(力作用)
bool LogiPlaySpringForce(const int index, const int offsetPercentage, const int
saturationPercentage, const int coefficientPercentage);
这个LogiPlaySpringForce () 函数作用是表示弹簧力开始
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游戏
控制器。
Offset Percentage:指定的弹簧力作用的中心,有效范围为-100至100。指定0为弹簧的中心
位置。超出此范围的任何值弹簧将静止不动。
saturationPercentage:指定弹力效果饱和的水平。经过中心位置一定的偏差后,饱和水平保
持不变,这相当于一个幅度。有效范围为0到100,任何值高于100的值弹簧将静止不动。
coefficientPercentage - 表示效果强度增加的斜率和中心位置处的条件有关。值越高意味着,
到达饱和水平越快。有效范围为-100到100,任何值超出有效范围弹簧将静止不动。
返回参数
成功返回true,否则返回false
注意
动态的弹簧力将在X轴上发挥作用,如果游戏杆已经被连接,则所有由方向盘SDK产
生的力都作用X轴上,另外会有一个恒定的弹簧在Y轴上。
LogiStopSpringForce
bool LogiStopSpringForce(const int index);
这个 LogiStopSpringForce ()函数停止弹簧力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlayConstantForce
bool LogiPlayConstantForce(const int index, const int magnitudePercentage);
这个LogiPlayConstantForce()函数产生恒力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage:指定的恒力作用的大小。负值表示力作用的方向相反。有效范围
为是-100到100,任何超出有效范围的值都将不产生作用。
返回参数
成功返回true,否则返回false
注意
如果采用物理引擎的值来不断更新恒力的值,此时效果最好,将方向盘和游戏杆通过一
个矢量力来和汽车引擎绑定在一起,这会产生一个弹簧的效果,一个滑动的效果,产生汽车
惯性的感觉,依赖物理引擎,它也应该产生侧面的碰撞效果(汽车的一个面撞到墙壁后,轮
或操纵杆应在相反的方向颤动),这个矢量力可以根据前轮胎测量的横向力来计算。这个矢
量力应该为0,当停止或是行驶在直线的时候。当转弯或是通过倾斜的表面时,这个矢量力
应该以成比例的方式增加。
LogiStopConstantForce(终止恒力作用)
bool LogiStopConstantForce(const int index);
这个LogiStopConstantForce () 函数停止恒力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlayDamperForce
bool LogiPlayDamperForce(const int index, const int coefficientPercentage);
这个 LogiPlayDamperForce () 函数产生阻尼力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
coefficientPercentage :表示效果强度增加的斜率和中心位置处的条件有关。值越高意味
着,到达饱和水平越快。有效范围为-100到100,任何值超出有效范围弹簧将静止不动。-100
模拟一个很平滑的效果,100使得轮子和操纵杆很难移动,模拟车子停止或是陷在泥潭里。
返回参数
成功返回true,否则返回false
注意
模拟那些很难开的路面(在泥里,车停止),或是湿滑路面(雪,或是冰面)
LogiStopDamperForce(停止作用力)
bool LogiStopDamperForce(const int index);
这个LogiStopDamperForce () 停止阻尼力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlaySideCollisionForce(侧向碰撞力)
bool LogiPlaySideCollisionForce(const int index, const int magnitudePercentage);
这个LogiPlaySideCollisionForce () 函数启动索引控制器的侧面碰撞力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage :指定的侧面碰撞力作用的大小。负值表示力的方向相反。有效范
围为是-100到100,任何超出有效范围的值弹簧都将不起作用
返回参数
成功返回true,否则返回false
注意
如果你已经采用了由物理引擎绑定的矢量力来作为恒力,则不需要再额外采用侧面碰撞
力,因为由于物理引擎,侧面碰撞力会自动地被恒力影响到。
LogiPlayFrontalCollisionForce(正向碰撞力)
bool LogiPlayFrontalCollisionForce(const int index, const int magnitudePercentage);
这个LogiPlayFrontalCollisionForce () 启动在索引控制器正面的碰撞力
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage:指定的正面碰撞力作用的大小。有效范围从0到100,高于100的值
将不会产生作用。
返回参数
成功返回true,否则返回false
LogiPlayDirtRoadEffect(土路效果)
bool LogiPlayDirtRoadEffect(const int index, const int magnitudePercentage);
这个LogiPlayDirtRoadEffect () f函数开启土路效果
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage:指土路影响的程度。有效范围为0到100,高于100不起作用。
返回参数
成功返回true,否则返回false
LogiStopDirtRoadEffect
bool LogiStopDirtRoadEffect(const int index);
这个LogiStopDirtRoadEffect () 停止土路效果(模拟)
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlayBumpyRoadEffect(颠簸路面)
bool LogiPlayBumpyRoadEffect(const int index, const int magnitudePercentage);
这个LogiPlayBumpyRoadEffect () 函数模拟颠簸路面的影响效果
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage :表示颠簸路面影响程度,有效范围从0到100,任何超出100的值
都将不会起作用。
返回参数
成功返回true,否则返回false
LogiStopBumpyRoadEffect
bool LogiStopBumpyRoadEffect (const int index);
这个函数停止模拟颠簸路面的影响
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlaySlipperyRoadEffect(平滑路面)
bool LogiPlaySlipperyRoadEffect(const int index, const int magnitudePercentage);
这个函数模拟平滑路面的影响效果。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
magnitudePercentage :表示平滑路面影响程度,有效范围从0到100,100表示最平滑的
效果
返回参数
成功返回true,否则返回false
LogiStopSlipperyRoadEffect
bool LogiStopSlipperyRoadEffect (const int index);
这个函数作用是停止模拟平滑路面的效果。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlaySurfaceEffect(路面响应效果)
bool LogiPlaySurfaceEffect(const int index, const int type, const int
magnitudePercentage, const int period);
这个函数表示表面影响的效果
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
类型:特定的类型的力影响,可以是以下数值:
o LOGI_PERIODICTYPE_SINE
o LOGI_PERIODICTYPE_SQUARE
o LOGI_PERIODICTYPE_TRIANGLE
magnitudePercentage:表示表面影响力的大小,有效范围从0到100,数值超过100则不
会起作用。
Period:表示周期力作用的期限,值是以毫秒测量的周期函数一个全周期的持续时间。
一个比较好的范围是从20ms(沙子)到120ms(木桥或是鹅卵石),作为一个表面的影响周
期不能大过150ms。
返回参数
成功返回true,否则返回false
LogiStopSurfaceEffectEffect
bool LogiStopSurfaceEffect (const int index);
这个函数停止表面的影响
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlayCarAirborne(空降效果模拟)
bool LogiPlayCarAirborne(const int index);
这个函数模拟汽车空降的效果。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiStopCarAirborne
bool LogiStopCarAirborne(const int index);
这个 LogiStopCarAirborne () 函数模拟汽车在路面腾空时的效果。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiPlaySoftstopForce(软停止力)
bool LogiPlaySoftstopForce(const int index, const int usableRangePercentage);
这个LogiPlaySoftstopForce () 函数表示汽车soft停止时的效果。
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
usableRangePercentage:表示在soft停止力影响百分数中的死区
返回参数
成功返回true,否则返回false
LogiStopSoftstopForce
bool LogiStopSoftstopForce(const int index);
这个 LogiStopSoftstopForce () 停止the soft stop force.
参数
索引:游戏控制器的索引。索引0对应连接的第一个游戏控制器。索引1对应第二个游
戏控制器。
返回参数
成功返回true,否则返回false
LogiSetPreferredControllerProperties(设置前轮属性)
bool LogiSetPreferredControllerProperties(const LogiControllerPropertiesData
properties);
该LogiSetPreferredControllerProperties()设置首选轮的属性。
参数
属性:包含的所有字段结构都要进行设置。
返回参数
成功返回true,否则返回false
LogiGetCurrentControllerProperties (获得当前控制器属性)
bool LogiGetCurrentControllerProperties(const int index,
LogiControllerPropertiesData& properties);
这个LogiGetCurrentControllerProperties () 根据当前控制器的参数填充性能参数
参数
索引:控制器的索引
properties : 接收当前参数
返回参数
成功返回true,否则返回false
LogiGetShifterMode(获得换挡模式)
int LogiGetShifterMode(const int index);
该LogiGetShifterMode()获取当前的换档模式(门或顺序)
参数
索引:控制器的索引
返回参数
1,如果移位器门,0如果移位是连续的,-1如有不明
LogiSetOperatingRange(设置控制器作用范围)
bool LogiSetOperatingRange(const int index, const int range);
所述LogiSetOperatingRange()用范围参数设置控制器的操作范围。
参数
索引:控制器的索引
范围:被设置操作范围
返回参数
成功返回true,否则返回false
LogiGetOperatingRange
bool LogiGetOperatingRange(const int index, int& range);
所述LogiGetOperatingRange()函数根据当前控制器的操作范围获得控制器的范围参数。
参数
索引:控制器的索引
范围:接收当前控制器的操作范围(是一个整数?)
返回参数
成功返回true,否则返回false
LogiPlayLeds(设置显示灯)
bool LogiPlayLeds(const int index, const float currentRPM, const float
rpmFirstLedTurnsOn, const float rpmRedLine);
该函数启动控制器的led。
参数
索引:控制器的索引
currentRPM:当前RPM
rpmFirstLedTurnsOn :当第一个led打开时的 RPM
rpmRedLine :低于这个值所有的led会打开,高于这个值,所有的led开始闪烁。
返回参数
成功返回true,否则返回false
LogiSetOperatingRangeDInput
bool LogiSetOperatingRangeDInput(const LPDIRECTINPUTDEVICE8
deviceHandle, const int range);
所述LogiSetOperatingRangeDInput()用范围参数设置控制器的操作范围
参数
deviceHandle: DInput 游戏控制器的手柄
range :被设置的参数范围
返回参数
成功返回true,否则返回false
注意
这个函数可以使用不管SDK是否已经被初始化(即可以在没有LogiSteeringInitialize函
数下使用)
LogiGetOperatingRangeDInput
bool LogiGetOperatingRangeDInput(const LPDIRECTINPUTDEVICE8
deviceHandle, int& range);
所述函数根据当前控制器的操作范围获得控制器的范围参数。
参数
deviceHandle: DInput 游戏控制器的手柄
范围:接收当前控制器的操作范围(是一个整数?)
返回参数
成功返回true,否则返回false
注意
这个函数可以使用不管SDK是否已经被初始化(即可以在没有LogiSteeringInitialize
函数下使用)
LogiPlayLedsDInput
bool LogiPlayLedsDInput(const LPDIRECTINPUTDEVICE8 deviceHandle, const
float currentRPM, const float rpmFirstLedTurnsOn, const float rpmRedLine);
该函数启动控制器的led。
参数
deviceHandle: DInput 游戏控制器的手柄
currentRPM:当前RPM
rpmFirstLedTurnsOn :当第一个led打开时的 RPM
rpmRedLine :低于这个值所有的led会打开,高于这个值,所有的led开始闪烁。
返回参数
成功返回true,否则返回false
注意
这个函数可以使用不管SDK是否已经被初始化(即可以在没有LogiSteeringInitialize函
数下使用)
LogiSteeringShutdown
bool LogiSteeringShutdown();
该LogiSteeringShutdown()关闭SDK和注销控制器对象
返回参数
这个函数没有返回参数
4613