Implementing the free camera
Free camera is the first camera type which we will implement in this recipe. A free camera does not have a fixed target. However it does have a fixed position from which it can look in any direction.
Getting ready
The following figure shows a free viewing camera. When we rotate the camera, it rotates at its position. When we move the camera, it keeps looking in the same direction.

The source code for this recipe is in the Chapter2/FreeCamera
directory. The CFreeCamera
class is defined in the Chapter2/src/FreeCamera.[h/cpp]
files. The class interface is as follows:
class CFreeCamera : public CAbstractCamera { public: CFreeCamera(void); ~CFreeCamera(void); void Update(); void Walk(const float dt); void Strafe(const float dt); void Lift(const float dt); void SetTranslation(const glm::vec3& t); glm::vec3 GetTranslation() const; void SetSpeed(const float speed); const float GetSpeed() const; protected: float speed; //move speed of camera in...