Я работаю над игровым приложением, которое имеет до тысячи форм (эллипсов и линий), которые постоянно меняются со скоростью 60 кадров в секунду. Прочитав отличную статью о рендеринге многих движущихся фигур, я реализовал это с помощью пользовательского потокового холста, который переопределяет OnRender
, чтобы сделать рисунок с помощью DrawingContext
. Производительность вполне разумна, хотя использование процессора остается высоким.
Однако в статье предлагается, что наиболее эффективным подходом для постоянно движущихся фигур является использование больших экземпляров DrawingVisual
вместо OnRender
. К сожалению, хотя это не объясняет, почему это должно быть быстрее для этого сценария.
Изменение реализации таким образом не является небольшим усилием, поэтому я хотел бы понять причины и применимы ли они ко мне, прежде чем принимать решение об этом. Почему подход DrawingVisual
приводит к более низкому использованию ЦП, чем подход OnRender
в этом сценарии?