About the problem of rendering order

TestNiftyGui test class, why nifty always can be rendered in the top of the screen,in debug nifty 、StatsView Always first is displayed.

I want to know the nifty, rootnode, guinode rendering order.

RenderManager.render(float tpf, boolean mainFrameBufferActive) {

if (renderer instanceof NullRenderer) {

return;

}



this.shader = renderer.getCaps().contains(Caps.GLSL100);



for (int i = 0; i < preViewPorts.size(); i++) {

ViewPort vp = preViewPorts.get(i);

if (vp.getOutputFrameBuffer() != null || mainFrameBufferActive){

renderViewPort(vp, tpf);

}

}

for (int i = 0; i < viewPorts.size(); i++) {

ViewPort vp = viewPorts.get(i);

if (vp.getOutputFrameBuffer() != null || mainFrameBufferActive){

renderViewPort(vp, tpf);

}

}

for (int i = 0; i < postViewPorts.size(); i++) {

ViewPort vp = postViewPorts.get(i);

if (vp.getOutputFrameBuffer() != null || mainFrameBufferActive){

renderViewPort(vp, tpf);

}

}

}

}

rootnode in viewport ,guinode and nifty in postviewport ,I think, in accordance with the above order, box which in rootnode should first be rendering. But, the result is shown below:

http://i.imgur.com/D6ISE.png

The box did not appear,Until the second rendering cycle

http://i.imgur.com/6jf9t.png



what happen in SceneProcessor.postQueue


>nifty.render
>currentScreen.renderLayers()
>renderQuad()
and display.update()

Pleas don’t double-post: http://hub.jmonkeyengine.org/groups/gui/forum/topic/why-nifty-always-can-be-rendered-in-the-top-of-the-screen/