Hi! Ich bin grad dabei Java zu lernen (kann bereits bissel C++ und sehr gut Delphi, SDL, hab also keine Probleme). Ich hab bisher immer SDL mit OpenGL verwendet und da durch Java die SDL ja überflüssig wird überlege ich jetzt entweder LWJGL oder JOGL zu verwenden. Hab mir mal das zuig bei Wikipedia durchgelesen komm aber noch nicht ganz klar. Meine Fragen:
1.) Gibt es ne Möglichkeit OpenGL einzubinden, sodass ich einfach die gewohnten OpenGL Befehle verwenden kann?
2.) Performance Unterschiede? (natürlich nicht zwischen C++ und Java, aber zwischen OpenGL in JOGL und LWJGL)
3.) Was würdet ihr mir empfehlen (pros / cons)?
Die frage könnte man einfach damit beantworten das es drarauf ankommt was du genauer machen möchtest.
JOGL als bsp. bietet die besseren möglichkeiten OpenGL in Swing oder AWT fenstern einzubinden.
LWJGL richtet sich mehr an Spieleentwickler, es gibt soweit ich das weiss keine möglichkeit mehrere fenster parallel laufen zu lassen, da LWJGL eher im Vollbild Modus laufen sollte.
Ein guter ansatz der momentan zu beiden kompatibel ist aber praktisch momentan nur LWJGL im hintergrund benutzt ist die JMonkeyEngine.
LWJGL richtet sich mehr an Spieleentwickler, es gibt soweit ich das weiss keine möglichkeit mehrere fenster parallel laufen zu lassen, da LWJGL eher im Vollbild Modus laufen sollte.
Doch, das geht. Du beziehst dich sicher auf ein "natives" Fenster (d.h. an Java2D vorbei), dann geht es in der Tat nicht. Damit geht nur Vollbild oder halt EIN Fenster. Du kannst aber auch die AWTGLCanvas nutzen. Damit kannst du in eine normale Canvas rendern und davon kannst du auch beliebig viele anlegen. Von daher lässt sich auch LWJGL in Swing/AWT integrieren, wenn man von den Lightweight/Heavyweight-Problemen absieht, die JOGL aber auch hat.
Ich hab für ein aktuelles projekt die Heayweight probleme gelöst bekommen bei LWJGL. Das JOGL welche hat ist mir bis jetzt nicht aufgefallen, rennt sogar alles prima zusammen.
Hmm, was LWJGL angeht denke ich man muss mit den Context das handhaben oder wie soll das gehen, ich hatte da immer probs ?
Du meinst mit mehreren Canvas' zu arbeiten? Nö, da muss man eigentlich gar nichts weiter machen. Ich erzeuge einfach 1,2,3...viele Instanzen von AWTGLCanvas und fülle die paintGL-Methoden entsprechend mit dem, was ich da gerne sehen möchte. Den Context habe ich dabei nicht angefasst.
Ersteres sollte mittlerweile vernünftig gehen (frühere Versionen hatten da irgendwelche Problem IIRC), aber wohl nur mit dem nativen Display und damit beschränkt auf ein Fenster. Mit der AWTGLCanvas sollte es soweit gehen, wie es mit dem normalen Java2D-Fullscreensupport halt auch geht, aber damit habe ich das auch nie so richtig gut auf allen Konfigurationen hinbekommen...unabhängig von LWJGL. Irgendwann (nach ein paar mal umschalten), hat sich Java da immer mit einer Exception verabschiedet. Aber so richtig inbrünstig habe ich das ehrlich gesagt auch nicht weiter verfolgt.