public static Matrix4X4 MakeOrtho(float left, float right, float bottom, float top, float znear, float zfar)
{
Matrix4X4 ret = new Matrix4X4(null);
float rl = (right - left);
float tb = (top - bottom);
float fn = (zfar - znear);
ret.Elements[0] = 2 / rl;
ret.Elements[1] = 0;
ret.Elements[2] = 0;
ret.Elements[3] = 0;
ret.Elements[4] = 0;
ret.Elements[5] = 2 / tb;
ret.Elements[6] = 0;
ret.Elements[7] = 0;
ret.Elements[8] = 0;
ret.Elements[9] = 0;
ret.Elements[10] = -2 / fn;
ret.Elements[11] = 0;
ret.Elements[12] = -(left + right) / rl;
ret.Elements[13] = -(top + bottom) / tb;
ret.Elements[14] = -(zfar + znear) / fn;
ret.Elements[15] = 1;
return ret;
}