I am working on a multi-thread render system to improve the performance for those menus that really keep u down.
The whole idea is to make 1 thread renders vertices that have be filled be another thread that simply calculates and fill the vertex arrays.
This way, ur calling DrawPrimitiveUP once per menu for the the Shapes and another per class font class. Then the alternative plenty to draw the complex GUI for good looking menus, and for every line that calls DrawText.
Batch processing, All everything to ur list then do it all one time for ur menu.
PS: Another advantage of this is those menus that are running slow because of low frame rate, will be generally at the same speed because the thread no longer have to wait for the graphics to be completed.
Downside to that is, u wont see what ur doing, but it will be done.