While using Fractorium, you may notice the UI can have a somewhat sticky and unresponsive feel if you try to use itĀ before the interactive renderer completes. The reason for this is that despite it being against all best practices, the rendering processing is done on the UI thread. So if you are trying to click on various parts of the UI, it will be unresponsive until the render completes.

Why do something that is strongly advised against in all graphical programming? It has to do with the inter operation between OpenGL and OpenCL.

During the initial phases of development, an attempt was made to place the renderer on a different thread. This worked when using the CPU, however it failed on the GPU. The reason is that the GPU processing shares its final output buffer with the texture used to display the image in the main window. This is done as an optimization to avoid an extra copy. The downside of it is that since the OpenGL texture is created on the main UI thread, it can only be accessed from the main thread, even if that access is done through OpenCL. For that reason, all rendering was placed on the main UI thread.

The sluggishness of the UI is less noticeable when using the GPU. If you do not have supported hardware, you should keep your interactive image sizes small and the quality low to ensure a responsive UI. Only scale the size and quality when doing a final render.