DirectX Z订单

时间:2011-01-26 03:52:22

标签: c# map directx gdi z-order

我必须使用Managed 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 ......等)
  7. 我已经可以做了:

    1. 画线和折线
    2. 绘制一层多边形
    3. 我的问题是:当我想绘制所有图层时,我只看到其中一个图层。我认为z排序存在一些问题。我该怎么做才能解决这个问题?修改RenderState?最好的情况是,如果我可以像GDI那样绘制(第一个在后面,最后一个在前面)。

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

      谢谢!

1 个答案:

答案 0 :(得分:0)

如果您的地图纯粹是2D,请确保关闭Z缓冲。一旦它出现,事物将按照你绘制的顺序显示。