Я так и не нашел встроенного способа сделать это, поэтому я написал свой собственный. Математика, стоящая за этим, может быть найдена в документации OpenGL glFrustum . Если кто-то еще сталкивается с этой проблемой, это должно работать для вас:
public Matrix3D CreateFrustumMatrix(double left, double right, double bottom, double top, double near, double far)
{
var a = (right + left) / (right - left);
var b = (top + bottom) / (top - bottom);
var c = -(far + near) / (far - near);
var d = -2 * far * near / (far - near);
return new Matrix3D(
2 * near / (right - left), 0, 0, 0,
0, 2 * near / (top - bottom), 0, 0,
a, b, c, -1,
0, 0, d, 0);
}
Просто установите MatrixCamera.ProjectionMatrix на возвращаемое значение этого метода, и все готово.