我一直在使用
matrix = *((fxMatrix*)&d3dMatrix);
相当长一段时间。它工作得很好,直到我的屏幕变黑并在我的桌子上收到一大堆挫败感。
fxMatrix 包含 4 个 fxVector。fxVector 以前是 16 字节,现在突然变成 20 字节了。这是因为它继承了 fxStreamable,增加了 vTable。
因此,一种解决方案当然是不继承 fxStreamable,并留下评论说它必须始终为 16 字节,并且永远不会更多。
另一种解决方案是制作转换函数,并完全复制矩阵。这使它更安全,但对性能有影响。我想这是最好的主意。
另一种解决方案是根本不转换,并坚持使用 D3DXMATRIX,但这会使引擎不一致,我个人非常不喜欢这个想法。
你有什么意见?