( arpi_esp | 2023. 12. 10., v – 20:35 )

azok konstansok:

#define X 0
#define Y 1
#define Z 2
#define W 3

biztos, hogy valami baja a 'mat' valtozoval van. ha ele irom hogy static, akkor jol mukodik. ha volatile-t irok ele akkor maskepp bugzik (majdnem jo de egyik iranyban meg van nyujtva a 3d object). ha atrakom mashova a deklaraciot az nem befolyasol. ha a mat_swap() tartalmat masolom oda fv hivas helyett (ugy latom sehol mashol nem hasznalja ezt ugyse) akkor se jobb:

 

  int       i, j;
  c_MATRIX  mat;

  mat_identity (mat);
  for (i = 0; i < 3; i++)
    for (j = 0; j < 3; j++)
      if (afs_fread_float(&(mat[i][j]), sizeof (float), 1, f) != 1) return ast3d_err_badfile;

//  mat_swap (mat);
#ifdef ast3d_SWAP_YZ
  phex(mat,sizeof(c_MATRIX));
  for (i = 0; i < 3; i++) { /* swap columns */
    float tmp = mat[i][Y];
    mat[i][Y] = mat[i][Z];
    mat[i][Z] = tmp;
  }
  phex(mat,sizeof(c_MATRIX));
  for (i = 0; i < 4; i++) { /* swap rows */
    float tmp = mat[Y][i];
    mat[Y][i] = mat[Z][i];
    mat[Z][i] = tmp;
  }
  phex(mat,sizeof(c_MATRIX));
#endif