今天遇到一个问题,在保存physx的NxShapeDesc时正常,但是load后,出现异常。
//保存时正常
save( &ShapeDesc, sizeof(NxShapeDesc) )
//读取时,vfptr被覆盖,再传递给NxScene创建actor后就会出错
load( &ShapeDesc, sizeof(NxShapeDesc) )
原来是NxShapeDesc使用了虚函数,c++编译器使用一个vfptr保存虚函数的列表,并且总是放在内存的第一个。
这样问题就简单了:只要在load之前保存vfptr的值,load后在改回去就行了
本文介绍了一个关于PhysX中NxShapeDesc在加载时出现vfptr被覆盖的问题及解决方案。通过保存并恢复vfptr的值,可以避免在加载后创建actor时发生错误。

被折叠的 条评论
为什么被折叠?



