Я пишу код на C ++ с использованием фреймворка openVR. Я могу успешно извлечь позиционные данные из контроллеров, но мне нужны ширина и глубина игровой зоны, чтобы я мог масштабировать позиционные данные на моем экране.
я пробовал
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, функции возвращают bool, поэтому попробуйте проверить, действительно ли он сначала работает, а затем вы на самом деле не печатаете значения с плавающей точкой, вы печатаете адрес, потому что они являются указателями.
Измените оператор печати на этот dprintf("PosX:%f PosZ:%f\n", *posX, *posZ);
таким образом вы разыменовываете указатели и получаете их значение.
Также я не знаю точно, как работает openvr, но после просмотра комментария Старка, что вы, вероятно, хотите сделать, это
float posX, posZ;
vr::VRChaperoneSetup()->GetWorkingPlayAreaSize(&posX, &posZ);
Таким образом, вы даете функции адрес ваших переменных, чтобы они могли их редактировать, а затем можете использовать printf так, как вы
dprintf("PosX:%f PosZ:%f\n", posX, posZ);
Других решений пока нет …