public Matrix4f frustum(float left, float right, float bottom, float top, float zNear, float zFar, boolean zZeroToOne, Matrix4f dest) {
        if ((properties & PROPERTY_IDENTITY) != 0)
            return dest.setFrustum(left, right, bottom, top, zNear, zFar, zZeroToOne);
        return frustumGeneric(left, right, bottom, top, zNear, zFar, zZeroToOne, dest);
    }
public Matrix4f frustum ( float left , float right , float bottom , float top , float zNear , float zFar , boolean zZeroToOne , Matrix4f dest ) { if ( ( properties & PROPERTY_IDENTITY ) != 0 ) return dest . setFrustum ( left , right , bottom , top , zNear , zFar , zZeroToOne ) ; return frustumGeneric ( left , right , bottom , top , zNear , zFar , zZeroToOne , dest ) ; }
Apply an arbitrary perspective projection frustum transformation for a right-handed coordinate system
using the given NDC z range to this matrix and store the result in <code>dest</code>.
<p>
If <code>M</code> is <code>this</code> matrix and <code>F</code> the frustum matrix,
then the new matrix will be <code>M * F</code>. So when transforming a
vector <code>v</code> with the new matrix by using <code>M * F * v</code>,
the frustum transformation will be applied first!
<p>
In order to set the matrix to a perspective frustum transformation without post-multiplying,
use {@link #setFrustum(float, float, float, float, float, float, boolean) setFrustum()}.
<p>
Reference: <a href="http://www.songho.ca/opengl/gl_projectionmatrix.html#perspective">http://www.songho.ca</a>

@see #setFrustum(float, float, float, float, float, float, boolean)

@param left
the distance along the x-axis to the left frustum edge
@param right
the distance along the x-axis to the right frustum edge
@param bottom
the distance along the y-axis to the bottom frustum edge
@param top
the distance along the y-axis to the top frustum edge
@param zNear
near clipping plane distance. If the special value {@link Float#POSITIVE_INFINITY} is used, the near clipping plane will be at positive infinity.
In that case, <code>zFar</code> may not also be {@link Float#POSITIVE_INFINITY}.
@param zFar
far clipping plane distance. If the special value {@link Float#POSITIVE_INFINITY} is used, the far clipping plane will be at positive infinity.
In that case, <code>zNear</code> may not also be {@link Float#POSITIVE_INFINITY}.
@param zZeroToOne
whether to use Vulkan's and Direct3D's NDC z range of <code>[0..+1]</code> when <code>true</code>
or whether to use OpenGL's NDC z range of <code>[-1..+1]</code> when <code>false</code>
@param dest
will hold the result
@return dest