我正在尝试在XNA中编写2D Bone系统。
我最初的想法是使用矩阵来跟踪骨骼中的旋转和定位,以便轻松显示项目。
酷我想,然后当我看到矩阵只能应用于单个精灵批处理时,沮丧地击中了我。打电话而不是每次打电话!
我运行了一些性能测试,以检查我的沮丧是否被消除了,并且调用spritebatch.Begin和End一段时间会使我的帧速率下降一个巨大的(并且是不可接受的)。
因此,在绘制单个骨骼图像之前,我将不得不手动构建它的最终位置和旋转(并且可能在将来进行缩放)。在这种情况下,你仍然会使用矩阵,并在绘制骨骼之前以某种方式提取信息吗?如果是这样,关于如何获得我需要的最终信息的任何想法?或者更容易尝试从它的父节点的原始位置和旋转构建它?
提前感谢任何有想法的人。
答案 0 :(得分:4)
老实说,我会抛弃Sprite渲染对象并切换到屏幕空间四边形。屏幕空间四边形没有人为限制,你可以使用骨骼系统的标准实现:在你去的时候遍历应用变换的树,然后在向上移动树时弹出它们。
答案 1 :(得分:0)
当你在2D工作时,矩阵是否过度杀伤?我指的是每个矩阵向量乘积的16个标量乘法,当你可以进行4次乘法轮换和2次求和翻译时?