Hi! I am currently using a T4.0 with a few different touchscreen displays and having some mixed performance results. I built this system originally with an ILI9341 2.8" screen and with the ILI9341_t3n library and double buffering, am getting amazing display quality with no flickering and a framerate right at 60FPS. Couldn't be happier with that setup.
However, wanting to upgrade this to a larger screen with more resolution and physical realestate, I've added both the 3.5" and 4.0" ili9488 480x320 touchscreens to this same system. The issue I am running into is when using buffering on these ili9488 screens, I am getting a dismal 8FPS which just isn't going to work for a turbocharger boost control system. The graphics are flicker-free with the buffering - same quality as with the ili9341_t3n but nowhere near the kind of framerate.
If I turn off the buffering on the ili9488 I get an amazing 70FPS, however, this results in a lot of flickering of the graphics and text on the screen. I am not performing a fillScreen with the ili9488 as I could with the 9341 when using the framebuffer. Rather, for the areas that are to be changed, I am using the fillRect/fillCircle/fillTriangle, etc, to black out the object from the previous frame and then re-drawing the new object immediately afterwards. Unfortunately this still results in a small amount of flickering of these objects.
One approach I've thought of is instead of drawing the previous object in black and redrawing the new object, if I could draw the new object first and then draw the inverse difference between the new and old in black, I believe this would get rid of the perceived flickering. I'm just not sure how exactly the code would be written to do this for things like text.
Is there already a function written in the ili9488 library that performs a task just like this?
OR, perhaps the problem I am experiencing is in how I am using the 9488 library? I've gone through the huge thread on this forum for the development of the 9488 library, which is some 28 pages long.... Trying to pick out the posts that are relative to where this library is at currently and how best to use it is nearly impossible.
Framebuffering would be the most desired method to use for this as I am also very familiar with that approach and my code is already setup that way. It is just baffling that there is an enormous difference going from 60FPS to only 8FPS with only an increase from 320X240 to 480X320 running identical code... Please help!
Here are some pics of these devices and a video of them in operation. The 2.8 display is rock solid but you can see the small flickering in the 3.5" and 4.0".
https://youtu.be/xtID1r2CaBc
However, wanting to upgrade this to a larger screen with more resolution and physical realestate, I've added both the 3.5" and 4.0" ili9488 480x320 touchscreens to this same system. The issue I am running into is when using buffering on these ili9488 screens, I am getting a dismal 8FPS which just isn't going to work for a turbocharger boost control system. The graphics are flicker-free with the buffering - same quality as with the ili9341_t3n but nowhere near the kind of framerate.
If I turn off the buffering on the ili9488 I get an amazing 70FPS, however, this results in a lot of flickering of the graphics and text on the screen. I am not performing a fillScreen with the ili9488 as I could with the 9341 when using the framebuffer. Rather, for the areas that are to be changed, I am using the fillRect/fillCircle/fillTriangle, etc, to black out the object from the previous frame and then re-drawing the new object immediately afterwards. Unfortunately this still results in a small amount of flickering of these objects.
One approach I've thought of is instead of drawing the previous object in black and redrawing the new object, if I could draw the new object first and then draw the inverse difference between the new and old in black, I believe this would get rid of the perceived flickering. I'm just not sure how exactly the code would be written to do this for things like text.
Is there already a function written in the ili9488 library that performs a task just like this?
OR, perhaps the problem I am experiencing is in how I am using the 9488 library? I've gone through the huge thread on this forum for the development of the 9488 library, which is some 28 pages long.... Trying to pick out the posts that are relative to where this library is at currently and how best to use it is nearly impossible.
Framebuffering would be the most desired method to use for this as I am also very familiar with that approach and my code is already setup that way. It is just baffling that there is an enormous difference going from 60FPS to only 8FPS with only an increase from 320X240 to 480X320 running identical code... Please help!
Here are some pics of these devices and a video of them in operation. The 2.8 display is rock solid but you can see the small flickering in the 3.5" and 4.0".
https://youtu.be/xtID1r2CaBc