3D引擎开发,慎用逆矩阵

这是irrlicht引擎的一个真实bug,他的粒子系统的boundingbox算的时候是世界空间的,但是由于irr的scene node有个统一的本地空间boundingbox,执行culling的时候再transform为absBoundingbox, 所以irr的粒子系统中先用粒子系统的逆矩阵将bounding box变换到本地,但是逆矩阵有时候不存在,得到一个0矩阵,然后就错了。。并且这样做要多执行一次矩阵求逆和两次矩阵对AABB的变换。固然统一的结构是好的,但是具体到可能出问题和影响效率的地方还是要注意的。

改法很简单,直接保存粒子系统的boundingbox为世界空间的,并且设置一个标志,如果是本地空间的boundingbox才transform,否则直接用。

你可能感兴趣的:(开发)