18-习题
习题
4.1 (项目)修改程序4.1以使用你自己设计的其他简单3D形状替换立方体。请务必在glDrawArrays()命令中正确指定顶点数。
4.2 (项目)在程序4.1中,在display()函数中“view”矩阵被简单地定义为摄像机位置的负数:
vMat = glm::translate(glm::mat4(1.0f), glm::vec3(-cameraX, -cameraY, -cameraZ));
将此代码替换为图3.13所示的计算实现。这将允许你通过指定摄像机位置和3个朝向轴来定位摄像机。你将发现有必要存储3.7节中描述的向量U、V、N。然后,尝试不同的摄像机视点,并观察渲染立方体的最终外观。
4.3 (项目)修改程序4.4以包含第二个“行星”,使用练习4.1中你自定义的3D形状。确保你的新“行星”处于与现有行星不同的轨道上,这样它们就不会发生碰撞。
4.4 (项目)修改程序4.4,使用“查看”函数构建“视图”矩阵(如第3.9节所述)。然后尝试将“查看”参数设置到不同的位置,例如查看太阳(在这种情况下场景应该看起来正常),查看行星或查看月球。
4.5 (研究)提出glCullFace(GL_FRONT_AND_BACK)的实际用途。