Я создаю приложение OpenGL на c ++, используя GLFW.Основываясь на этом руководстве, мне удалось создать FPS-подобную камеру (движение WASD + поворот-рыскание с движением мыши).
Для перемещения мыши в камере я использую
glfwSetCursorPosCallback(window, mouse_callback);
void mouse_callback(GLFWwindow* window, double xpos, double ypos)
{
if (firstMouse)
{
lastX = xpos;
lastY = ypos;
firstMouse = false;
}
float xoffset = xpos - lastX;
float yoffset = lastY - ypos;
lastX = xpos;
lastY = ypos;
float sensitivity = 0.1f;
xoffset *= sensitivity;
yoffset *= sensitivity;
yaw += xoffset;
pitch += yoffset;
if (pitch > 89.0f)
pitch = 89.0f;
if (pitch < -89.0f)
pitch = -89.0f;
glm::vec3 front;
front.x = cos(glm::radians(yaw)) * cos(glm::radians(pitch));
front.y = sin(glm::radians(pitch));
front.z = sin(glm::radians(yaw)) * cos(glm::radians(pitch));
cameraFront = glm::normalize(front);
}
Это работает нормально, но проблема в том, что окно моего приложения не полноэкранное, поэтому, если я хочу повернуть, курсор мыши выходит из окна, а затем трудно управлять камерой.
Можно ли сделать то же самое, что и glfwSetCursorPosCallback, но только при нажатии левой кнопки мыши?Я хочу, чтобы камера делала то же самое, что и сейчас, но только если я нажал левой кнопкой мыши.