В полилайне довольно много точек, где то раз в 3 пикселя по горзонтали точка. Если канвас отскейлить на весь экран в 2к+ разрешении и если график покрывает значительную часть экрана фпс стремится к нулю. Если график покрывает условно говоря полэкрана все отлично. Попрофайлил и смотрю что большую часть времени мы сидим в wpfgfx_cor3.dll!CHwRasterizer.RasterizeEdges. Что может с этим сделать навскидку чтоб как-то ехало, кроме того чтоб выкинуть канвас и рендерить руками картинку?
WriteableBitmap используйте, рисуйте трапециями, а не одним полигоном.
Рисуйте через ⚡️ 🔥 SET PIXEL 🔥 ⚡️
очень не хочется :(
Вообще раньше, когда на WinAPI программировали, была такая фигня, называлась Invalidate Rectangle, и оконо рисовало только тот квадратег, который нужно перерисовать, и все могло работать на IBM AT 386 на 33 мегагерцах. Теперь компы в 1000 раз быстрее, и никто не парится такими мелочами, как нарисовать заново десяток миллионов пикселей. Но, как видно, FPS дерганый и по сей день у многих получается, почему-то.
Ну местами это разумный трейдофф. Иногда дороже посчитать что именно нужно перерисовать чем просто перерисовать.
Обсуждают сегодня