- glUniformMatrix4fv(glGetUniformLocation(shaderProgram, "model"), 1, GL_FALSE, glm::value_ptr(model));\r
- glUniformMatrix4fv(glGetUniformLocation(shaderProgram, "view"), 1, GL_FALSE, glm::value_ptr(view));\r
- glUniformMatrix4fv(glGetUniformLocation(shaderProgram, "projection"), 1, GL_FALSE, glm::value_ptr(proj));\r
+ //rotate\r
+ //model = glm::rotate(model, glm::radians(0.2f), glm::vec3(0.0f, 1.0f, 0.0f));\r
+\r
+ if (options.freecam) {\r
+ view = glm::lookAt(camPos, camPos + camForward, camUp);\r
+ } else {\r
+ float angle = arcball.mouseY / 200.0f;\r
+ if (angle > glm::radians(89.0f)) {\r
+ angle = glm::radians(89.0f);\r
+ arcball.mouseY = angle * 200.0f;\r
+ }\r
+ if (angle < glm::radians(-89.0f)) {\r
+ angle = glm::radians(-89.0f);\r
+ arcball.mouseY = angle * 200.0f;\r
+ }\r
+ arcball.camX = sin(angle) * exp(options.radius);\r
+ arcball.camZ = cos(angle) * exp(options.radius);\r
+ view = glm::lookAt(glm::vec3(0.0, arcball.camX, arcball.camZ), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0));\r
+ view = glm::rotate(view, arcball.mouseX / 100.0f, glm::vec3(0, 1, 0));\r
+ }\r
+\r
+ glUniformMatrix4fv(glGetUniformLocation(shaderProgram, "model"), 1,\r
+ GL_FALSE, glm::value_ptr(model));\r
+ glUniformMatrix4fv(glGetUniformLocation(shaderProgram, "view"), 1, GL_FALSE,\r
+ glm::value_ptr(view));\r
+ glUniformMatrix4fv(glGetUniformLocation(shaderProgram, "projection"), 1,\r
+ GL_FALSE, glm::value_ptr(proj));\r
+\r
+ glUniform3f(glGetUniformLocation(shaderProgram, "objectColor"), 1.0f, 0.5f,\r
+ 0.31f);\r
+ glUniform3f(glGetUniformLocation(shaderProgram, "lightColor"), 1.0f, 1.0f,\r
+ 1.0f);\r
+ glUniform3fv(glGetUniformLocation(shaderProgram, "lightPos"), 1, glm::value_ptr(lightPos));\r