private MGFXHeader ReadHeader(byte[] effectCode)
{
MGFXHeader header;
int i=0;
header.Signature = BitConverter.ToInt32(effectCode, i); i += 4;
header.Version = (int)effectCode[i++];
header.Profile = (int)effectCode[i++];
header.EffectKey = BitConverter.ToInt32(effectCode, i); i += 4;
header.HeaderSize = i;
if (header.Signature != MGFXHeader.MGFXSignature)
throw new Exception("This does not appear to be a MonoGame MGFX file!");
if (header.Version < MGFXHeader.MGFXVersion)
throw new Exception("This MGFX effect is for an older release of MonoGame and needs to be rebuilt.");
if (header.Version > MGFXHeader.MGFXVersion)
throw new Exception("This MGFX effect seems to be for a newer release of MonoGame.");
#if DIRECTX
if (header.Profile != 1)
#else
if (header.Profile != 0)
#endif
throw new Exception("This MGFX effect was built for a different platform!");
return header;
}