I need to change from right handed coord to left handed, however dont know where actually to start , the goal is supposed to look from behind like X points right, Y up, Z points forward,
I found that glFrustum calculattion needs to be changed but they say it will negate the Z axis and i need to swap X axis...
ANYWAY
i believe gluPerspectiveA function has glFrustum code in it
template <class T> void
glLookAt(Matrix44<T> &matrix, t3dpoint<T> eyePosition3D, t3dpoint<T> center3D, t3dpoint<T> upVector3D )
{
t3dpoint<T> forward, side, up;
forward = Normalize( vectorAB(eyePosition3D, center3D) );
side = Normalize( forward * upVector3D );
up = side * forward;
matrix.LoadIdentity();
matrix.m[0] = side.x;
matrix.m[1] = side.y;
matrix.m[2] = side.z;
matrix.m[4] = up.x;
matrix.m[5] = up.y;
matrix.m[6] = up.z;
matrix.m[8] = -forward.x;
matrix.m[9] = -forward.y;
matrix.m[10] = -forward.z;
Matrix44<T> transgender;
transgender.Translate(-eyePosition3D.x, -eyePosition3D.y, -eyePosition3D.z);
matrix = transgender * matrix;
}
template <class T>
void gluPerspectiveA(Matrix44<T> & matrix, T fovy, T aspect, T zmin, T zmax)
{
T xmin, xmax, ymin, ymax;
ymax = zmin * tan(fovy * M_PI / 360.0);
ymin = -ymax;
xmin = ymin * aspect;
xmax = ymax * aspect;
matrix.m[0] = (2.0*zmin)/(xmax-xmin);
matrix.m[1] = 0.0;
matrix.m[2] = (xmax + xmin) / (xmax - xmin);
matrix.m[3] = 0.0;
matrix.m[4] = 0.0;
matrix.m[5] = (2.0*zmin) / (ymax - ymin);
matrix.m[6] = (ymax + ymin) / (ymax - ymin);
matrix.m[7] = 0.0;
matrix.m[8] = 0.0;
matrix.m[9] = 0.0;
matrix.m[10] = -(zmax + zmin) / (zmax-zmin);
matrix.m[11] = (-2.0*zmax*zmin) / (zmax-zmin);
matrix.m[12] = 0.0;
matrix.m[13] = 0.0;
matrix.m[14] = -1.0;
matrix.m[15] = 0.0;
}