Hi,
I am writing my own charting assembly for .NET
The goal is to be able to draw 50k points with automatic chart scaling on different windows (within the same process) at 60 FPS on a modern hardware
Thinking that 50k is a lot and having no experience at all in graphic application development I decided to go for the most suitable, as the developers say themselves, drawing subsystem - Direct 2D.
After implementing that I got about 10 FPS.
Several optimization steps (resource preallocation, resource preinitialization, caching, profiling and so on) it got up to 30-40 FPS which is still unacceptable.
Currently I am unable to perform further optimization because 80% of the time is spent during actual interaction with SharpDX Direct2D wrapper (95% of that time is spent between BeginDraw and EndDraw)
I tried to get familiar with Direct3D 11 and is now stuck with some points that require a lot of time to be invested in to understand the undergoing processes in order to come out with decent result (starting from - there is no concept of 'DrawLine', ending in - what do I do to get a constant chart margin to draw arguments on, should I calculate the transformation myself? on CPU or GPU side? how to pass a transformation matrix to a shader? how to build it?..)
The questions are:
1. Is it even possible to achieve the posed goal?
2. Where should I look next to get closer to 60 FPS?
PS. Currently typical chart looks like this: