I recently added a single 2D Lemur button to my application, and noticed a significant degradation in performance of my app. I tracked the problem down to mouse collision events being calculated on the 3D scene graph, even though I was only using Lemur for 2D controls.
It looks like Lemur by default will still calculate mouse collision events on the full 3D object graph, even if there are no 3D controls in use.
If you are using Lemur, and not using it for 3D Gui controls, try adding these lines:
MouseAppState mouseAppState = getStateManager().getState(MouseAppState.class); mouseAppState.removeCollisionRoot(terrain3D.getRootNode());
Note that this performance cost presumably scales with the complexity of your scene graph, so this may not be causing an actual problem, depending on your application. This made a huge difference to me, and brought the performance back to how it was prior to adding Lemur.
This is not a criticism of Lemur, just something you may not be aware of if you are using Lemur.
If anyone knows more details on this please chime in!