Как нарисовать карту высот на экране?

Я использую DirectX10 для моделирования поверхности воды, и теперь у меня есть карта высот, которая представляет собой двумерный массив высот (y) в точках (x, z). Но чтобы нарисовать его на экране, я должен превратить его в сетку или иметь индекс для рисования топологии треугольника.

Но данных слишком много, чтобы делать это вручную. Есть ли какие-нибудь методы для меня, чтобы нарисовать его на экране. Я надеюсь, что это легко реализовать. Если в DirectX10 есть функция, которая может это сделать, то для меня это лучший вариант.


person moonkey    schedule 30.08.2011    source источник
comment
Эммм... Когда я сказал слишком большой, я имел в виду, что не могу ввести типологию вручную.   -  person moonkey    schedule 31.08.2011


Ответы (2)


Создайте сетку, которая отформатирует сетку квадратов (каждый из которых состоит из двух треугольников) и установите для всех вершин y = 0. В вершинном шейдере выберите карту высот и добавьте значение, хранящееся в карте высот, к y вершины.

Это может вам помочь.

P.S: Если область, которую вы хотите покрыть, слишком велика, вам следует взглянуть на методы LOD местности (должны работать так же и для воды).

person Tiago Costa    schedule 01.09.2011

Я уверен, что вы можете сделать сетку из него. Я сомневаюсь, что вы можете создать карту высот для водной поверхности, которая слишком велика для «мешификации».

Почему ты смотришь на Алмазный квадрат? Для карты высот 512x512 все, что вам нужно сделать, это определить набор точек, а затем сгенерировать для него треугольники. Это действительно очень просто.

person Goz    schedule 30.08.2011
comment
Я только что нашел метод, называемый методом Diamond-Square, который может генерировать карту высот. Я сгенерировал 512 * 512. На самом деле вы можете получить больший из этого. Но как я могу связать это? - person moonkey; 31.08.2011