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