Hi,
We are working with NGUI on a game that needs to handle a big scrolling list of widgets.
Each cell of this list contains approximately 5 sprites and 5 labels of dynamic font.
The list may contain up to 150 cells.
We are using NGUI above 3.0.7 and our goal is to achieve steady 60 FPS on a iPhone 4.
We easily know which cell is on screen so we are culling the cells manually with enable/disable when cells enter/leave screen.
Prior to the “one widget list per panel” commits (0e1c815 and 7b0e78e) we had 2 panels, one for the background, and one scrolling with the list.
We had a total of 5 draw calls, about 130 on-screen widgets.
When not scrolling we were at 60 FPS, but, due to the fact that, at this time, when a widget/panel was enabled/disabled, all panels recompute all drawcalls, we had huge drops when cells were entering/leaving the screen (approximately 100ms frame).
After those two commits (starting from 3.0.8b1, we are using a439f2a), we tried to go one panel per widget, going to 25 Draw calls but our framerate dropped to 10 FPS.
Even worth, when we draw our scene with two panels like before (5 draw calls), we only have 18 FPS when not scrolling

We also noticed some mesh rebuild bug where draw calls were not correctly ordered when cells entered the screen until a mRebuild=true occurs

Our guess is that the best solution would be to regroup cells in panel of 6-7 cells. then enable/disable those groups. For this, we need the “One widget list per panel” optimization, but the current implementation won’t allow us to reach 60 FPS

So how would you suggest to do this ? Should we wait for some optimizations or change the way we handle the list ? Do you think there may be a performance regression ?
Thx.