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

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

0
moonkey 31 Авг 2011 в 00:20

2 ответа

Лучший ответ

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

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

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

2
Tiago Costa 1 Сен 2011 в 12:22

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

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

1
Goz 31 Авг 2011 в 05:32