无法从VRChaperone访问游乐区

时间:2018-07-23 20:27:24

标签: c++ htc-vive openvr

我正在使用openVR框架编写一些C ++代码。我可以从控制器成功提取位置数据,但是我需要播放区域的宽度和深度,以便可以将位置数据缩放到屏幕上。

我尝试过

vr::VRChaperone()->GetCalibrationState(); 
vr::VRChaperoneSetup()->RevertWorkingCopy();    
float *posX = 0;    
float *posZ = 0;    
vr::VRChaperoneSetup()->GetWorkingPlayAreaSize(posX, posZ);     
dprintf("PosX:%f PosZ:%f\n", posX, posZ);

但它一直说posX和posZ均为0。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

快速查看github函数是否返回布尔值后,请尝试检查它是否首先实际起作用,然后再不实际打印浮点数的值,就在打印地址的原因是因为它们是指针。
通过取消引用指针并获取其值的方式,将print语句更改为此dprintf("PosX:%f PosZ:%f\n", *posX, *posZ);
另外我也不知道openvr是如何工作的,但是在查看stark的评论之后,您可能想做的是
float posX, posZ;
vr::VRChaperoneSetup()->GetWorkingPlayAreaSize(&posX, &posZ);
这样,您可以为函数提供变量的地址,以便可以对其进行编辑,然后可以按自己的方式使用printf
dprintf("PosX:%f PosZ:%f\n", posX, posZ);