1:对GLM的projection
函数中的FoV
和aspect-ratio
参数进行实验。看能否搞懂它们是如何影响透视平截头体的。
glm::mat4 model = glm::mat4(1.0f); // make sure to initialize matrix to identity matrix first
glm::mat4 view = glm::mat4(1.0f);
glm::mat4 projection = glm::mat4(1.0f);
model = glm::rotate(model, (float)glfwGetTime(), glm::vec3(0.5f, 1.0f, 0.0f));
view = glm::translate(view, glm::vec3(0.0f, 0.0f, -3.0f));
projection = glm::perspective(glm::radians(45.0f), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f);
上面两个图分别是fov= 45和fov=80,可以看到,角度越大,模型越小。
2:将观察矩阵在各个方向上进行位移,来看看场景是如何改变的。注意把观察矩阵当成摄像机对象。
view = glm::translate(view, glm::vec3(0.0f, 0.0f, -3.0f));
当z轴值变大,靠更近了,阿猛头像变大。
view = glm::translate(view, glm::vec3(0.0f, 0.0f, -1.0f));
view = glm::translate(view, glm::vec3(0.5f, 0.0f, -3.0f));
view = glm::translate(view, glm::vec3(0.0f, 0.5f, -3.0f));