Nowhk wrote:Are you saying that "calculate biquad filter coefficients AND draw with software renderers" is cheap and "draw lines/shapes with software renderers" is expensive?
Not sure if I got the point. In both case you draw pixels.
Using somethings like LICE or cairo (within IPlug for example) is quite faster.
Or what do you mean with software renderers?
I'm not sure why but I thought I read you were using OpenGL. My mistake. Using a software renderer is the expensive part. Computing filter coefficients and line points is cheap.
A software renderer basically draws pixels on the CPU. OpenGL on the other hand uses the graphics card to draw each pixel. Lots of UI libraries have both software renderer and OpenGL backends to choose from but even using the OpenGL backend sometimes won't get you that much faster if you're copying a lot of memory (e.g. line points) over to the GPU.
So say I want to draw a filter response. I first compute the filter coefficients which is super cheap. Then, I have to draw the line.
One option is to compute all the points on the UI thread and pass it to some UI library. In this case if the library is using a software renderer, it is slow because you're drawing pixels on the CPU. If the library is using an OpenGL backend, it's faster but still could be slow because copying memory over to the GPU takes time.
A more efficient option is to pass only the filter coefficients over to a vertex shader in OpenGL. This vertex shader basically moves vertices around and so can compute our line points for us. This might be overkill for most developers, and I'm not aware of any apps that actually do it this way (except for mine