知道我的顶点是否(以及如何)被重新排序

know if (and how) my vertices were reordered

C++、Box2d 2.3 游戏开发在这里进行。

TL;DR: 请阅读粗体文本。

创建b2PolygonShape后,我可以使用Set()函数设置形状的顶点,它需要一个 b2Vec2 对象数组和一个计数。 In the documentation of that function 有一个 警告说顶点可能会重新排序 即使它们形成凸多边形。

现在,我使用形状中的顶点渲染灯具。我目前正在实施 UV 贴图;我有一个 UV 点向量,仅按顺序与原始顶点向量对应。如果顶点重新排序,UV 向量将不匹配,并且会出现渲染错误。 我如何知道顶点是否已重新排序以及如何重新排序,以便我可以以相同的方式重新排序我的 UV 点?

澄清一下,我指的是从 b2PolygonShape.GetVertex() 中检索到的结果订单。

似乎没有任何官方方法可以做到这一点,因此,如果不修改源代码,唯一的选择似乎是自己存储顶点并从自己的列表中渲染,而不是在渲染时查询 Box2D。请注意,这也为您提供了更多的艺术自由;您可以以不必完全按照物理模拟的方式渲染固定装置(例如,您不想参与模拟的带有角或尾巴的角色)。