ich bin heute über ein Problem mit ASSIMP auf dem iPhone gestossen:
Textbasierte Formate (z.B. collada) funktionieren wunderbar. Allerdings habe ich ein Problem mit Binärformaten (getestet habe ich 3ds und lwo). Bei diesen Formaten funktioniert der Import im iPhone Simulator wunderbar... allerdings nicht auf einem echten Gerät.
Da der Simulator ja kein Emulator ist und direkt X86 Code ausführt ist das auch halbwegs nachvollziehbar. Ich vermute mal es könnte evtl. an einem Endian-Problem im Zusammenhang mit der ARM-CPU des iPhones liegen.
Konkret geht es z.B. bei der Ausführung an folgenden Stellen daneben (EXC_BAD_ACCESS):
bei 3ds in Streamreader.h
Code: Alles auswählen
// ---------------------------------------------------------------------
/** Generic read method. ByteSwap::Swap(T*) *must* be defined */
template <typename T>
T Get() {
if (current + sizeof(T) > limit) {
throw DeadlyImportError("End of file or stream limit was reached");
}
T f = *((const T*)current);
Intern :: Getter<SwapEndianess,T,RuntimeSwitch>() (&f,le);
current += sizeof(T);
return f;
}
Code: Alles auswählen
// ------------------------------------------------------------------------------------------------
inline float LWOImporter::GetF4()
{
float f = *((float*)mFileBuffer);mFileBuffer += 4;
AI_LSWAP4(f);
return f;
}
Hat jemand eine Idee?
Vielen Dank!
Maxx