0

我必须使用托管 DirectX 绘制地图。地图以 MapInfo 格式(线、折线、区域/多边形)到达。多边形已经被三角剖分(使用 GLUtesselator 完成)。

想法:

  1. GPS 坐标转换为 x,y 点(墨卡托投影)
  2. 我使用 PositionColored VertexFormat
  3. 视图的中心是 [x,y] (可以通过鼠标移动修改)
  4. 相机始终定位到 [x,y,z] 其中 z 是缩放(默认为-100,可以通过鼠标滚轮修改)
  5. 相机目标是:[x,y,0],相机向上:[0,1,0]
  6. 地图的图层由 Z 定位(+1.0、0.99、0.98、0.97...等)

我已经可以做到:

  1. 画线和折线
  2. 画一层多边形

我的问题是:当我想绘制所有图层时,我只看到其中一个。我认为 z 排序存在一些问题。我应该怎么做才能解决这个问题?修改渲染状态?如果我可以像在 GDI 中那样绘制(首先在后面,最后在前面),那将是最好的。

其他问题:如何获取鼠标光标下像素的坐标?(在地图的 GDI 版本中我可以这样做,因为我使用自己的视口进行渲染,但现在 Directx 可以做所有事情)

谢谢!

4

1 回答 1

0

如果您的地图是纯二维的,请确保关闭 Z 缓冲。一旦完成,事物将按照您绘制它们的顺序显示。

于 2011-03-29T22:58:42.110 回答