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.

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

Resize() void virtual

Updates the projection transform to match the new viewport size.

cpp
void PerspectiveCamera::Resize(int width, int height) override;
ParameterDescription
widthViewport width in pixels.
heightViewport height in pixels.

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.