diff --git a/src/main.cpp b/src/main.cpp index dfeca98..427d25a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -116,6 +116,25 @@ GLuint LoadShaders(const char *vertex_file, const char *fragment_file) Camera camera(800.0f/600.0f); +bool firstMouse = true; +float lastX, lastY; + +void mouse_callback(GLFWwindow* window, double xpos, double ypos) +{ + if (firstMouse) + { + lastX = xpos; + lastY = ypos; + firstMouse = false; + } + + glm::vec2 offset(xpos - lastX, lastY - ypos); + lastX = xpos; + lastY = ypos; + + camera.rotate(offset); +} + int main(void) { GLFWwindow* window; // Указатель на окно GLFW3 @@ -147,6 +166,9 @@ int main(void) glfwSwapInterval(1); // Вертикальная синхронизация + // Установка callback-функции для мыши и камеры + glfwSetCursorPosCallback(window, mouse_callback); + // Загрузка функций OpenGL с помощью GLAD if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {