XNA中的2D骨骼系统

4

我正在尝试在XNA中编写2D骨骼系统。

我的第一想法是使用矩阵来跟踪整个骨骼树中的旋转和定位,以便可以轻松地显示物品。

我认为很棒,但当我看到矩阵只能应用于单个精灵batch.Begin调用而不是每次绘制调用时,我感到沮丧。

我进行了一些性能测试,以检查我的沮丧是否有道理,结果发现,调用spritebatch.BeginEnd多次会使我的帧率大幅下降(不可接受)。

因此,在绘制单个骨骼图像之前,我将不得不手动构造其最终位置和旋转(也许在未来还包括缩放)。在这种情况下,您仍然会使用矩阵,并在绘制骨骼之前提取所需的最终信息吗?如果是这样,您有什么关于如何获取我需要的最终信息的想法吗?或者从其父节点的原始位置和旋转开始构建它是否更容易?

2个回答

4
说实话,我会放弃使用Sprite渲染对象并转换为屏幕空间四边形。屏幕空间四边形没有人为限制,并且您可以使用标准的骨骼系统实现:沿着树向下遍历应用变换,然后在向上移动树时弹出它们。

0

在二维编程中,矩阵不是过于复杂了吗?我是说,对于每个矩阵-向量乘积需要进行16次标量乘法,而对于旋转只需要4次乘法,对于平移只需要2次求和,不是更加简单明了吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接