从ID2D1PathGeometry检索路径段

时间:2012-01-24 21:36:37

标签: directx direct2d pathgeometry

我目前正在尝试使用SlimDX在C#中编写一个小游戏引擎,只是为了好玩。

我希望我的世界变得可破坏,所以我必须能够修改我的地图。我的地图目前是基于矢量的,由ID2D1PathGeometry(SlimDX中的PathGeometry)对象表示。使用ID2D1Geometry的CombineWithGeometry方法(SlimDX中的几何)修改此对象。

对于合理的碰撞检测,我需要了解ID2D1PathGeometry对象的确切形状,例如用于计算墙壁弹跳的角度。

那么,是否可以访问我的ID2D1PathGeometry对象的所有或特定(每个位置)的segements / lines / points?或者是否有其他更好的方法来实现我的目标,例如另外在另一个数据结构中存储所有行和形状?

请注意,基于位图的地图不是这里的方式,因为我不想将内存作为地图大小的约束。

最好的问候,Emi

1 个答案:

答案 0 :(得分:1)

无法仅检索接近某个点的几何体片段,但有一种方法可以检索所有几何体片段。

  1. 实现一个继承自ID2D1SimplifiedGeometrySink的类。
  2. 创建该类的实例并将其传递给ID2D1Geometry :: Simplify。
  3. 更多信息和示例在这里How to Retrieve Geometry Data by Extending ID2D1SimplifiedGeometrySink

    如果您有兴趣只检索接近某一点的部分,也许您想:

    1. 围绕感兴趣点创建矩形几何体。
    2. 使用D2D1_COMBINE_MODE == D2D1_COMBINE_MODE_INTERSECT通过ID2D1Geometry::CombineWithGeometry将其与几何图形相交。
    3. 使用上述方法获取相交的几何体。
    4. 更多信息:ID2D1Geometry::CombineWithGeometry method