gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

DS development > A fixed gluLookAtf32()

#42149 - bluescrn - Fri May 06, 2005 8:23 pm

This version should actually work... unlike the broken fix I posted on IRC last weekend!....

Replace the function, in videoGL.c in NDSlib with:

Code:

void gluLookAtf32(f32 eyex, f32 eyey, f32 eyez, f32 lookAtx, f32 lookAty, f32 lookAtz, f32 upx, f32 upy, f32 upz)
{
   f32 side[3], forward[3], up[3];

   forward[0] = lookAtx - eyex;
   forward[1] = lookAty - eyey;
   forward[2] = lookAtz - eyez;

   normalizef32(forward);

   up[0] = upx;
   up[1] = upy;
   up[2] = upz;

   crossf32(forward, up, side);
   normalizef32(side);
   crossf32(side, forward, up);
   
   glMatrixMode(GL_MODELVIEW);

   MATRIX_LOAD4x3 =  side[0];
   MATRIX_LOAD4x3 =  up[0];
   MATRIX_LOAD4x3 = -forward[0];

   MATRIX_LOAD4x3 =  side[1];
   MATRIX_LOAD4x3 =  up[1];
   MATRIX_LOAD4x3 = -forward[1];

   MATRIX_LOAD4x3 =  side[2];
   MATRIX_LOAD4x3 =  up[2];
   MATRIX_LOAD4x3 = -forward[2];

   MATRIX_LOAD4x3 = 0;
   MATRIX_LOAD4x3 = 0;
   MATRIX_LOAD4x3 = floatof32(-1.0);

   glTranslate3f32(-eyex, -eyey, -eyez);
}