无法从 VRChaperone 访问游戏区

Cannot access play area from VRChaperone

我正在使用 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。有什么想法吗?

快速浏览了 github 函数 returns 一个 bool 之后,尝试先检查它是否真的有效,然后你实际上并没有打印浮点数的值,你正在打印地址的原因是它们是指针。
将打印语句更改为此 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);