Closed GlitchyPSIX closed 1 year ago
And remember to enable DoubleBuffered for FrmMain. Don't ask why.
And remember to enable DoubleBuffered for FrmMain. Don't ask why.
I'd actually very much like to know why. I think I already double-buffer the Timeline control itself
Crazyly, I use WinForm Controls to make a animation, just like some YTPMVs do. and I used some Random classes to make the text shake. However, the program runs ultra-slow and even crashed. But when I magically enabled the doublebuffer option, it worked very well. I think the Timeline Control is also a kind of control so doublebuffer it may accelerate the speed. (I used microsoft grammar checker to correct it)
https://github.com/8192Bit/Windows-no-UI-kimoji-yosugidaro here and DO NOT see the code
I already doublebuffer the Timeline UserControl itself to address an issue that it had with flickering.
I think the biggest performance hog for Timeline is how the timeline is rendered manually from zero. (Also WS_EX_COMPOSITED)
But I will try and make the main form DoubleBuffered to see if it makes an impact.
When moving to Keyshift, I have updated the rendering to be delta rendering rather than rendering everything at once at every moment, as well as separating the trackhead parts from the actual racks. This has proven to increase performance by a TON, and I'd say these improvements were covered here.
The Timeline Renderer itself was moved to Keyshift, so I have opened a discussion at GlitchyPSIX/Keyshift#4 to discuss potential more improvement by moving away from GDI+, which is what System.Drawing uses and so do the rest of the Windows Forms controls for even better performance.
Closing this here now.
Right now the Timeline is a single Bitmap drawn on demand. With very long racks, this can prove to be extremely taxing on the computer and other M64MM addons.
Current ideas to improve performance involve reducing the amount of redraws the Timeline does, and have the trackhead be an object separate from the rack renderer, which would significantly reduce the render time for both.