   Creating a camera frustum that looks down -Z axis.
  If I can create a camera frustum that looks down the +Z axis using the following with an just a projection matrix:   public void SetMatrix(Matrix M)   {  // Clipping planes (For Right-Handed Cartesian coordinate system)  Vector3 v;  // Left  v.X = M.M14 + M.M11;  v.Y = M.M24 + M.M21;  v.Z = M.M34 + M.M31;  planes[2].Normal = v;    // a, b, c  planes[2].D = M.M44 + M.M41;  // d  // Right  v.X = M.M14 - M.M11;  v.Y = M.M24 - M.M21;  v.Z = M.M34 - M.M31;  planes[3].Normal = v;  planes[3].D = M.M44 - M.M41;  // Bottom  v.X = M.M14 + M.M12;  v.Y = M.M24 + M.M22;  v.Z = M.M34 + M.M32;  planes[4].Normal = v;  planes[4].D = M.M44 + M.M42;  // Top  v.X = M.M14 - M.M12;  v.Y = M.M24 - M.M22;  v.Z = M.M34 - M.M32;  planes[5].Normal = v;  planes[5].D = M.M44 - M.M42;  // Near  v.X = M.M13;  v.Y = M.M23;  v.Z = M.M33;  planes[0].Normal = v;  planes[0].D = M.M43;  // Far  v.X = M.M14 - M.M13;  v.Y = M.M24 - M.M23;  v.Z = M.M34 - M.M33;  planes[1].Normal = v;  planes[1].D = M.M44 - M.M43;  // Normalise all plane equations  for (int i = 0; i < 6; ++i)  { // Get the magnitude/length of the plane normal vector // Magnitude = Math.Sqrt(Plane.Normal.X * Plane.Normal.X + Plane.Normal.Y * Plane.Normal.Y + Plane.Normal.Z * Plane.Normal.Z); float magnitude = planes.Normal.Length(); planes.Normal /= magnitude; planes.D /= magnitude;  }  SetCorners();   }What do I have to change to get the camera looking down the -Z axis instead?   
  I don't think you need to change the frustum plane extraction code at all. If you feed it a right-handed projection matrix, the frustum will be 'pointing' down the -z axis, whereas if you feed it a left-handed projection matrix, the frustum will be pointing down the +z axis.So in other words, it's the input matrix you want to change, not the plane extraction code. (IINM.)   ;  I have the following to create my projection matrix:   private void Perspective(float aspect_Ratio, float z_NearClipPlane, float z_FarClipPlane)   {  float scale_Y = 1.0f / (float)Math.Tan(MathHelper.ToRadians(Settings.FOV_X) * 0.5f);  float scale_X = scale_Y / aspect_Ratio;    matrix_Projection.M11 = scale_X;  matrix_Projection.M12 = 0.0f;  matrix_Projection.M13 = 0.0f;  matrix_Projection.M14 = 0.0f;  matrix_Projection.M21 = 0.0f;  matrix_Projection.M22 = scale_Y;  matrix_Projection.M23 = 0.0f;  matrix_Projection.M24 = 0.0f;  matrix_Projection.M31 = 0.0f;  matrix_Projection.M32 = 0.0f;  matrix_Projection.M33 = z_FarClipPlane / (z_NearClipPlane - z_FarClipPlane);  matrix_Projection.M34 = -1.0f;  matrix_Projection.M41 = 0.0f;  matrix_Projection.M42 = 0.0f;  matrix_Projection.M43 = (z_NearClipPlane * z_FarClipPlane) / (z_NearClipPlane - z_FarClipPlane);  matrix_Projection.M44 = 0.0f;   }I am uncertain as to its handedness though.  Can you let me know if this is right/left handed please?The drawn frustum is still pointing in the wrong direction.   ;  I might be misreading, but that looks right-handed to me. I say this because for a (D3D-style) left-handed matrix, element 33 would typically be f/(f-n), but you have f/(n-f); that is, the sign is reversed.But, you said that the frustum appears to be coming out left-handed? If so, I'm not sure why that is - maybe there's an error elsewhere in your code that's 'reversing' the results (I've only glanced over the code myself, so I can't tell you at this point where this error would be).   ;  Should the planes normals that define the frustum be facing inwards or out?  The frustum centroid being located "inwards".   ;Stewart Butterfield, Flickr co-founder, turns his attention toward the online game market with Glitch, an entirely new title that delivers what he views is an experience unlike anything yet launched, and he here explains why.  View the full article