XNA 2D Обнаружение деформации деформированного ландшафта без GetData () - PullRequest
0 голосов
/ 09 апреля 2011

В настоящее время я работаю над игрой Worms, которая включает в себя деформацию ландшафта.Раньше я делал это с .GetData, изменяя массив цветов, затем используя .SetData, но я пытался изменить его, чтобы вместо этого сделать работу на GPU (используя RenderTargets).

Все идет хорошоэто, но у меня возникла другая проблема.Все мое обнаружение столкновений с местностью было основано на массиве цветов, представляющих местность, но у меня больше нет этого цветового массива.Я мог бы использовать .GetData каждый раз, когда я изменяю ландшафт для обновления массива Color, но это противоречило бы цели моих первоначальных изменений.

Я был бы согласен с использованием GetData один раз в начале, а затемизменение этого массива на основе изменений, которые я внесу в ландшафт позже другими способами.Я не знаю, как бы я это сделал, кто-нибудь может помочь?

1 Ответ

0 голосов
/ 09 апреля 2011

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

  • Рисование кратера выполняется в пакетном режиме, а это означает, что вместо того, чтобы рисовать каждый из них по мере его создания, я добавляю их в список и рисую их все через несколько кадров.Это уменьшает количество вызовов GetData - по одному на партию кратеров, а не по одному на кратер.

  • После отрисовки кратеров до цели рендеринга я подожду несколько кадров, прежде чем вызывать GetData, чтобы убедиться, чтоGPU обработал все команды рисования.Это сводит к минимуму задержки конвейера.

  • Если у меня есть ожидающий вызов GetData и поступает больше кратеров, кратеры будут оставаться пакетированными, пока вызов GetData не будет завершен.Другими словами, рисование и получение синхронизируются так, что вызов GetData всегда происходит через несколько кадров после рисования партии кратеров, и любые новые запросы рисования кратера ожидают до тех пор, пока не будут получены ожидающие данные.

Если у кого-то есть другие предложения, я все равно буду рад их услышать.

...