Почему требуется столько времени на отрисовку RenderTargetBitmap?

Почему RenderTargetBitmap отрисовывает графику с такой низкой производительностью по сравнению с игровыми движками, такими как тот, что используется в игре Skyrim? Какие способы оптимизации доступны для увеличения скорости отрисовки, учитывая то, что требуется отрисовать 10 000 клеток в секунду?
  • 22 декабря 2023 г. 11:17
Ответы на вопрос 2
Отрисовка RenderTargetBitmap занимает больше времени по сравнению с игровыми движками, потому что RenderTargetBitmap выполняет отрисовку на основе WPF, которая весьма гибкая, но, в конечном итоге, медленная по сравнению с нативными методами отрисовки, используемыми игровыми движками.

Игровые движки, такие как тот, что используется в игре Skyrim, обычно оптимизированы для отрисовки большого количества графических объектов в реальном времени. Они используют оптимизированные алгоритмы и аппаратное ускорение для увеличения производительности отрисовки. В отличие от этого, RenderTargetBitmap работает на основе WPF, которая предназначена для разработки настольных приложений и не оптимизирована для отрисовки большого количества объектов в реальном времени.

Оптимизация отрисовки с помощью RenderTargetBitmap может быть сложной задачей, особенно при отрисовке 10 000 клеток в секунду. Некоторые способы оптимизации, которые могут быть полезными, включают:

1. Понижение разрешения: если не требуется высокое разрешение изображения, можно понизить его, чтобы ускорить процесс отрисовки.

2. Использование многопоточности: разделение работы на несколько потоков может увеличить скорость отрисовки. Но следует быть осторожным, так как WPF имеет ограничение на работу с элементами пользовательского интерфейса из разных потоков.

3. Использование аппаратного ускорения: если это возможно, можно использовать аппаратное ускорение через OpenGL или DirectX для улучшения производительности.

4. Удаление ненужных элементов и упрощение сцены: если есть возможность удалить или упростить элементы сцены, это может снизить нагрузку на отрисовку.

5. Кэширование: кэширование изображений или элементов пользовательского интерфейса может быть полезным, чтобы избежать повторной отрисовки одних и тех же элементов каждый раз.

В конечном итоге, производительность отрисовки с помощью RenderTargetBitmap будет ограничена возможностями WPF. Если требуется высокая производительность, рекомендуется рассмотреть использование специализированного игрового движка.
судя по информации что я нашел https://stackoverflow.com/questions/56582013/why-t... 
RenderTargetBitmap doesn't take advantage of hardware rendering

т.е. простыми словами - он рендерит на CPU, и в отличие от GPU рендеринга (шейдерами в играх как вы приводите сравнение), CPU рендеринг очень медленный, и не предназначен для высокого FPS, а скорее для оффлайн обработки как в граф редакторе без видеокарты :)
Похожие вопросы