Мне нужно нарисовать карту с помощью Managed DirectX.Карта поступила в формате MapInfo (линии, полилинии, регионы / полигоны).Полигоны уже триангулированы (сделано с помощью GLUtesselator).
Идея:
- Координаты GPS преобразуются в точки x, y (проекция Меркатора)
- Я использую PositionColoredVertexFormat
- Центром обзора является [x, y] (можно изменить при перемещении мыши)
- Камера всегда расположена на [x, y, z], где z - масштаб (-100по умолчанию может изменяться колесом мыши)
- Цель камеры: [x, y, 0], камера вверху: [0,1,0]
- Слои карты расположеныпо Z (+1,0, 0,99, 0,98, 0,97 ... и т. д.)
Я уже могу сделать:
- Рисовать линии и полилинии
- Рисоватьодин слой многоугольников
Моя проблема: когда я хочу нарисовать все слои, я вижу только один из них.Я думаю, что есть некоторая проблема с z-порядком.Что я должен сделать, чтобы решить это?Изменить RenderState?Лучше всего, если бы я мог рисовать как в GDI (сначала сзади, последним впереди).
Другой вопрос: как я могу получить координату пикселя под курсором мыши?(в версии карты GDI я мог сделать это, потому что я использовал свой собственный видовой экран для рендеринга, но теперь directx делает все)
Спасибо!