ciao.
ho la seguente struttura cheserve per fare il sort di un immagine sapendo la larghezza e l'altezza:
questa il semplice istruzione che fa il sort di un a mappa
codice:
for ( fmSort = formatMap.begin(); fmSort != formatMap.end(); ++fmSort)
std::sort( (*fmSort).second.begin(), (*fmSort).second.end(), Texture2DGreater() );
codice:
typedef struct _TEXTURE
{
bool operator()(Texture2D const *s1, Texture2D const *s2) const
{
if (s1->GetHeight()*s1->GetWidth() > s2->GetHeight()*s2->GetWidth())
return true;
else if ( (s1->GetHeight() > s2->GetHeight())
&& (s1->GetHeight()*s1->GetWidth() == s2->GetHeight()*s2->GetWidth()))
return true;
else if ( (s1->GetWidth() > s2->GetWidth())
&& (s1->GetHeight()*s1->GetWidth() == s2->GetHeight()*s2->GetWidth()))
return true;
else
return false;
}
} Texture2DGreater;
test:
codice:
s1->GetHeight() = 1024
s2->GetHeight = 512
s1->GetWidth() = 512;
s2->GetWidth() = 1024;
di questa immagine viene fatto il sort tranquillamente
ma
codice:
s1->GetHeight() = 512
s2->GetHeight = 1024
s1->GetWidth() = 1024;
s2->GetWidth() = 512;
e qui mi ritorna un errore.
a cosa è dovuto?
ho visto che ci sono gia texture con le stesse dimensioni e penso che l'errore sia dovuto al fatto che per una texture did stesse deimensioni la struct di comparazione mi ritorna due bool uguali?
vorrei capire a fondo la situzione e , si anche correggerlo , ma capire bene il perchè.
grazie.