I understand that OpenGl and DirectX are different APIs. Let's say if I develop on DirectX, will it run OpenGL mode?
To the J3d programmer, this should make no difference between the two, in reality theres a couple of points you should remember..
As far as I understand DirectX mode is more advanced and up to date due Microsofts love for pc games, is this true?
Nope, actually the wrong way around, the DX version is missing a few features here and there, namely:
Can't adjust wireframe width
Poly offset is ignored
A few other details with line/point rendering that i can't remember (mainly antialiasing related).
Also I think both versions may have problems with some of the more obscure texture wrapping modes, but this may have been fixed.
I read somewhere in the docs that Canvas3D has innate double buffering. Is this true?
If i remember correctly, you chose how many buffers you want on creating the Canvas3D.
For the game loop I tend to favour over-riding preRender() in Canvas3D, which works nicely and keeps you in sync properly with the internal rendering.
For 2d, if you want to use Graphics2D or similar, then that involves the rendered scene being read back over the agp, drawn to, and then copied back across into video memory - hence its dog slow
A much better way is to emulate 2d by using textured quads aligned to face the camera - attaching geometry to the view platform works nicely for HUDs.
Last time i tried it, offscreen rendering wasn't hardware accelerated, and so very slow, I think I heard this being fixed in a recent version though, or it might still be planned.. Note, all the above was from my experiences with J3d about 6-12 months ago, and so some of these problems might have been fixed.