Skip to content

PerspectiveCamera ​

Represents a camera that uses perspective projection.

This projection mode is designed to mimic the way the human eye sees. It is the most common projection mode used for rendering a 3D scene.

Although multiple cameras can be added to the scene graph and inherit transformations from their parent objects, only one camera is rendered at a time, the one passed to Renderer::Render. Construct the camera directly with the window's aspect ratio and pass it into the render call each frame.

cpp
auto camera = vglx::PerspectiveCamera::Create({
  .fov = vglx::math::DegToRad(60.0f),
  .aspect = window.AspectRatio(),
  .near = 0.1f,
  .far = 1000.0f
});

renderer.Render(scene.get(), camera.get());

INFO

Derives from Camera and inherits all public properties and methods.

Construction ​

Constructors ​


PerspectiveCamera() ​

Constructs a perspective camera.

cpp
PerspectiveCamera::PerspectiveCamera(const Parameters& params);
ParameterDescription
paramsInitialization parameters for constructing the camera.

Factories preferred ​


PerspectiveCamera::Create() std::unique_ptr<PerspectiveCamera> ​

Creates an instance of PerspectiveCamera with default parameters.

cpp
static std::unique_ptr<PerspectiveCamera> PerspectiveCamera::Create();

PerspectiveCamera::Create() std::unique_ptr<PerspectiveCamera> ​

Creates an instance of PerspectiveCamera.

cpp
static std::unique_ptr<PerspectiveCamera> PerspectiveCamera::Create(const Parameters& params);
ParameterDescription
paramsInitialization parameters for constructing the camera.

Types ​

PerspectiveCamera::Parameters struct ​

Parameters for constructing a PerspectiveCamera object.

ParameterDescription
fov floatVertical field of view in radians.
aspect floatAspect ratio.
near floatDistance to the near clipping plane.
far floatDistance to the far clipping plane.

Functions ​

SetLens() void ​

Configures perspective projection parameters.

Updates the camera's vertical field of view, near plane, and far plane, and rebuilds the projection transform accordingly. The aspect ratio remains unchanged until Resize is called.

cpp
void PerspectiveCamera::SetLens(float fov, float near, float far);
ParameterDescription
fovVertical field of view in radians.
nearDistance to the near clipping plane.
farDistance to the far clipping plane.

Released under the MIT License.