Cause racine REELLE
Les menus utilisaient AppState.render() pour dessiner via Renderer2D.
render() s’execute AVANT que JME rende ses viewports. L’etat GL laisse
par Renderer2D (FBO, viewport letterbox, shader actif) corrompait le rendu
JME du frame suivant, meme sans invalidateState().
Fix : utiliser postRender() a la place de render()
postRender() s’execute APRES que JME ait completement rendu tous ses
viewports. L’etat GL laisse par Renderer2D ne peut plus impacter JME
pour ce frame — JME a deja fini.
Avantages supplementaires :
– Plus besoin de desactiver/reactiver le viewport JME
– Plus besoin de restaurer l’etat GL dans cleanup()
– Plus besoin de enqueue() pour differer la destruction
– Code beaucoup plus simple
Ordre d’execution corrige
Avant (bug) :
1. render() : Renderer2D dessine (corrompt GL state)
2. JME rend ses viewports (avec GL state corrompu -> noir)
Apres (correct) :
1. JME rend ses viewports (GL state propre)
2. postRender() : Renderer2D dessine par-dessus (GL state sans impact)