【发布时间】:2011-06-15 15:14:35
【问题描述】:
我必须使用托管 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 可以做所有事情)
谢谢!
【问题讨论】:
标签: c# map directx gdi z-order