/// <summary>
 /// Sets a symmetric, perspective projection based on size.
 /// </summary>
 /// <param name="width">The width of the frustum at the near clip plane.</param>
 /// <param name="height">The height of the frustum at the near clip plane.</param>
 /// <exception cref="ArgumentOutOfRangeException">
 /// <paramref name="width"/> or <paramref name="height"/> is negative or 0.
 /// </exception>
 public void Set(float width, float height)
 {
     ViewVolume.SetWidthAndHeight(width, height);
     Invalidate();
 }
 /// <overloads>
 /// <summary>
 /// Sets a symmetric, perspective projection based on width and height.
 /// </summary>
 /// </overloads>
 ///
 /// <summary>
 /// Sets a symmetric, perspective projection based on size and depth.
 /// </summary>
 /// <param name="width">The width of the frustum at the near clip plane.</param>
 /// <param name="height">The height of the frustum at the near clip plane.</param>
 /// <param name="near">The distance to the near clip plane.</param>
 /// <param name="far">The distance to the far clip plane.</param>
 /// <exception cref="ArgumentOutOfRangeException">
 /// <paramref name="width"/> or <paramref name="height"/> is negative or 0.
 /// </exception>
 /// <exception cref="ArgumentException">
 /// <paramref name="near"/> is greater than or equal to <paramref name="far"/>.
 /// </exception>
 public void Set(float width, float height, float near, float far)
 {
     ViewVolume.SetWidthAndHeight(width, height, near, far);
     Invalidate();
 }