DirectX Z заказ - PullRequest
       11

DirectX Z заказ

0 голосов
/ 26 января 2011

Мне нужно нарисовать карту с помощью Managed DirectX.Карта поступила в формате MapInfo (линии, полилинии, регионы / полигоны).Полигоны уже триангулированы (сделано с помощью GLUtesselator).

Идея:

  1. Координаты GPS преобразуются в точки x, y (проекция Меркатора)
  2. Я использую PositionColoredVertexFormat
  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-порядком.Что я должен сделать, чтобы решить это?Изменить RenderState?Лучше всего, если бы я мог рисовать как в GDI (сначала сзади, последним впереди).

Другой вопрос: как я могу получить координату пикселя под курсором мыши?(в версии карты GDI я мог сделать это, потому что я использовал свой собственный видовой экран для рендеринга, но теперь directx делает все)

Спасибо!

1 Ответ

0 голосов
/ 30 марта 2011

Если ваша карта чисто 2D, убедитесь, что буферизация Z отключена.Как только это произойдет, все будет отображаться в том порядке, в котором вы их нарисовали.

...