我必须使用托管 DirectX 绘制地图。地图以 MapInfo 格式(线、折线、区域/多边形)到达。多边形已经被三角剖分(使用 GLUtesselator 完成)。
想法:
- GPS 坐标转换为 x,y 点(墨卡托投影)
- 我使用 PositionColored VertexFormat
- 视图的中心是 [x,y] (可以通过鼠标移动修改)
- 相机始终定位到 [x,y,z] 其中 z 是缩放(默认为-100,可以通过鼠标滚轮修改)
- 相机目标是:[x,y,0],相机向上:[0,1,0]
- 地图的图层由 Z 定位(+1.0、0.99、0.98、0.97...等)
我已经可以做到:
- 画线和折线
- 画一层多边形
我的问题是:当我想绘制所有图层时,我只看到其中一个。我认为 z 排序存在一些问题。我应该怎么做才能解决这个问题?修改渲染状态?如果我可以像在 GDI 中那样绘制(首先在后面,最后在前面),那将是最好的。
其他问题:如何获取鼠标光标下像素的坐标?(在地图的 GDI 版本中我可以这样做,因为我使用自己的视口进行渲染,但现在 Directx 可以做所有事情)
谢谢!