#c #glfw
#c #glfw
Вопрос:
Я пытаюсь получить ввод с джойстика (Thrustmaster Hotas x, если это имеет значение) с помощью GLFW, но использование glfwGetJoystickAxes и кнопок работает не так, как ожидалось. Оси выводятся как 00007FF77FC0D820, и нет никакой информации о состоянии кнопок. Что бы я здесь делал не так?
const float* Joystick::getAxesState()
{
axes = glfwGetJoystickAxes(GLFW_JOYSTICK_1, amp;axesCount);
return axes;
}
const unsigned char* Joystick::getButtonState()
{
buttons = glfwGetJoystickButtons(GLFW_JOYSTICK_1, amp;buttonCount);
return buttons;
}
Комментарии:
1. glfwGetJoystickAxes и glfwGetJoystickButtons возвращают массивы символов с плавающей точкой и без знака соответственно. Попробуйте получить к ним доступ как <axes_return> [индекс] и <buttons_return>[индекс]. Они имеют длину <whatever_count_you_fed_it>
2. @NathanWride, Который устранил проблему, добавьте ее в качестве ответа
3. Не забывайте, что вы должны вызывать эти функции только один раз. Они возвращают указатель на встроенные буферы состояния GLFW, которые обновляются самостоятельно с помощью event pump.
4. @Quentin Я добавлю это к своему ответу
5. Если вы сохраняете эти указатели дольше, чем кадр, убедитесь, что вы зарегистрировали обратный вызов джойстика. Указатели станут недействительными, если джойстик / контроллер отключен.
Ответ №1:
glfwGetJoystickAxes(<joystick>,<count>)
возвращает массив из float[<count>]
glfwGetJoystickButtons(<joystick>,<count>)
возвращает массив из unsigned char[<count>]
Попробуйте получить к ним доступ как <axes_return>[index]
и <buttons_return>[index]
.
Также, как упоминал @Quentin, вы должны вызывать эти функции только один раз, потому что возвращаемые значения являются указателями на внутренне сохраненные состояния glfw.