to check if a Matrix is an Identity I use this function:
bool IsIdentity (const Mat44& m)
{
const DWORD* pFloat = (DWORD*) &m.m11;
DWORD Sum = pFloat [1];
Sum |= pFloat [2];
Sum |= pFloat [3];
Sum |= pFloat [4];
Sum |= pFloat [6];
Sum |= pFloat [7];
Sum |= pFloat [8];
Sum |= pFloat [9];
Sum |= pFloat [11];
Sum |= pFloat [12];
Sum |= pFloat [13];
Sum |= pFloat [14];
if (Sum) return false;
Sum = pFloat [0];
Sum += pfloat [5];
Sum += pfloat [10];
Sum += pfloat [15];
// 0xFE000000 = 0x3F800000 * 4
// 0x3F800000 = bitmask of 1.0f
return (Sum == 0xFE000000);
}
I'm betting that the compiler will optimize it for me, because my asm is lame.Up until now I've been happy with it, but lately I've been making heavy use of Matrix multiplications (due to my scene graph).
So in order to avoid useless mul's I must detect & ignore Identity matrices.
Now it's not that I have all that many Identity Matrices around... but I'm happier if I can speed up the above check.
Any tips?
Thanks In Advance,
ciao ciao : )












