Sorry if this is a little disjointed. My thought process tends to run over itself.
As I understand it, the createWindow method called on DisplaySystem is actually implemented by the renderer, specifically the LWJGL renderer? The window it creates is not resizable (I can't drag a corner and shrink/expand it). I would like a little more flexibility to my window so I dragged some code out of the applet example and created a swing window that I could resize all I wanted with a JMECanvas on it. It worked fine except for two gotchas.
- I keep reading that using a canvas is significantly slower than using a native opengl window. I'm not quite sure I understand what a native opengl window is, and/or why rendering to a canvas would be slower. Can someone try and explain that, or point me toward an explanation please?
- The framerate on a canvas seems to be locked to the monitors refresh rate no matter what I do. Rendering in an opengl window is not vsynced, so I know it's off. After some testing it seems that the jme update rate is directly linked to the canvas repaint rate, and repaints are limited to one per screen refresh. I can slow down the frame rate in the canvas by increasing the sleep time in my repaint canvas thread. Am I doing something wrong there or is that an inevitable side effect of rendering to a canvas?
It seems like I should be able to create a headless display and repaint the canvas from the buffer, or is that what the createCanvas method is actually doing? Am I completely wrong about where createWindow and createCanvas are being implemented? If I can see their implementation that would go a long way toward helping me understand.
Point number one is most important, because the kind of app I have in mind to use jME for (and I would really like to because of all it's features), needs to be able to maximize the window, but not fullscreen.
And hello to everyone :). Great to be here.