-1

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

4

1 回答 1

1

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

于 2018-07-23T21:23:08.713 回答