C # / XNA - RenderTarget2D.GetData (), RenderTarget2D.SetData (): эффективно ли это для клонирования текстур на кадр? - PullRequest
1 голос
/ 03 апреля 2012

Итак, начиная с последнего вопроса, я обнаружил, что мое решение состоит в дублировании текстуры для предотвращения проблем со ссылками. Однако я спрашиваю:

    Color[] color = new Color[screen.Width * screen.Height];
    InputRenderTarget2D.GetData(Color);
    OutputRenderTarget2D.SetData(color);

С одной стороны, эффективно ли это при запуске 60 раз в секунду? Хотя он устанавливает 1 текстуру, я параноик по производительности и ХОЧУ поддерживать производительность на приличном или лучшем уровне. Вызывает ли это «в основном заметные кадры» и тому подобное?

Во-вторых, повысит ли это производительность, чтобы вместо создания нового массива цветов я его переработал?

1 Ответ

3 голосов
/ 03 апреля 2012

Я полагаю, что это ухудшит производительность, потому что вызовы GetData () / SetData () передадут данные rendertarget в основную память.IMO, лучшая альтернатива - визуализация InputRenderTarget2D в OutputRenderTarget2D с использованием четырехугольника того же размера.Это предотвратит передачу данных CPU-GPU.

...