Coordinate Systems

小结:

  1. GLM的projection函数中的FoV代表视角,值越大就好像眼睛睁得越大,看到的东西就越多,所以你的图像会变小;值越大就好像眼睛睁得越小,看到的东西就很少,所以你的图像会放大。
  2. GLM的projection函数中的aspect-ratio代表宽高比,值越大宽被拉长,值越小高被拉长。
  3. 将观察矩阵在各个方向上进行位移,来看看场景是如何改变的。注意把观察矩阵当成摄像机对象。首先将右手坐标系对准自己,在各个方向上位移实际上就把坐标系位移,头不移动,然后偏头看向坐标系(你的右手),就是当前的视角了。
  4. 使用模型矩阵只让是3倍数的箱子旋转(以及第1个箱子),而让剩下的箱子保持静止
 1 ...
 2 
 3 
 4 glBindVertexArray(VAO);
 5 for(unsigned int i = 0; i < 10; i++)
 6 {
 7     // calculate the model matrix for each object and pass it to shader before drawing
 8     glm::mat4 model;
 9     model = glm::translate(model, cubePositions[i]);
10     float angle = 20.0f * i; 
11     if(i % 3 == 0)  // every 3rd iteration (including the first) we set the angle using GLFW's time function.
12         angle = glfwGetTime() * 25.0f;
13     model = glm::rotate(model, glm::radians(angle), glm::vec3(1.0f, 0.3f, 0.5f));
14     ourShader.setMat4("model", model);
15     
16     glDrawArrays(GL_TRIANGLES, 0, 36);           
17 }
18 
19 ...
View Code

2019/11/28

原文地址:https://www.cnblogs.com/ljy08163268/p/11953757.html