Bonjour à tous,
Je développe depuis peu sous Ubuntu en C++. Je réalise un moteur 3D en raytracing avec photonmapping et ça marchait très bien sous windows.
Le passage sous linux m'a forcé à me séparer de quelques bibliothèques très pratiques que je dois reprogrammer, en particulier la gestion des matrices.
Le programme fonctionnait très bien jusqu'à maintenant. En le lancant, j'ai une erreur que je n'avais pas avant (sous Ubuntu), je ne sais pas pourquoi ça me le fait maintenant mais je connais avec gdb la ligne de code où ça plante et je ne comprends pas l'origine.
Le message d'erreur est le suivant : Program received signal SIGABRT, Aborted.
Cette ligne est précédée de pas mal de valeurs mais peu de texte.
Voici le code de la fonction à problème :
Cmatrix
Cmatrix::operator *(const Cmatrix &mat) const
{
if (mNumCol!=mat.mNumRow)
return Cmatrix(0, 0);
int r, c, d;
Cmatrix res(mNumRow, mat.mNumCol);
for (r=0; r<res.mNumRow; r++)
for (c=0; c<res.mNumCol; c++)
{
res[r][c] = 0.0;
for (d=0; d<mNumCol; d++)
res[r][c] += (*this)[r][d] * mat[d][c];
}
double w = res[res.mNumRow-1][res.mNumCol-1];
if (w!=0.0 && w!=1.0)
for (r=0; r<res.mNumRow; r++)
for (c=0; c<res.mNumCol; c++)
res[r][c] /= w;
return res;
}
et ça plante à la dernière ligne : }
j'appelle la fonction ainsi : Vertex = Scale*Vertex;
Je me demande si je n'ai pas désinstallé involontairement une bibliothèque en supprimant des logiciels que j'essayais
Vous avez des pistes?
Message édité par nieahaibane le 07-08-2007 à 22:07:48