OpenGL实例教程12:摄像机移动
前面学习了如何放置相机。下一步是允许用户控制它。控制相机将使用两个输入设备:
键盘,控制位置
鼠标,改变朝向
本节只介绍通过键盘控制位置,下一节将介绍如何通过鼠标控制朝向。最终将实现类似第一人称视角射击游戏的效果:

通过键盘移动位置
我们将以传统的方式支持四个方向键。相机变换是由位置、目标和向上向量定义的。当使用键盘移动时,只改变了位置。不能倾斜相机或旋转它,目标和向上向量将不受影响。
为了控制键盘,将使用另一个GLUT API: glutSpecialFunc()。该函数注册了一个回调函数,当单击“特殊”键时触发。特殊键包括:功能键、方向键、上页键、下页键、首页键、结束键、插入键。如果想捕获普通键(字符和数字),请使用glutKeyboardFunc()。
Camera库:
camera.h
camera.cpp
前后移动比较简单,左右移动将使用叉乘,通过右手法则可以判断方向。

应用程序实现代码: