# lwjgl oder jogl nutzen



## zipmar (23. Okt 2012)

Hi!

Ich würde gerne OpenGL nutzen und bin unentschlossen ob ich lwjgl oder Jogl nutzen soll.

Ich möchte alte Games nachbauen und natürlich einiges von meiner eigenen Kreativität mit einbringen. (Paperboy, etc.)

Was ist besser? zu erlernen und zu benutzen?

Könnt ihr mir da so ein paar Tip's geben?

gruß
zipmar???:L


----------



## Marco13 (23. Okt 2012)

Zu Erlernen sind im wesentlichen beide gleich schwer, da steckt der Aufwand im "GL" und nicht im "JO" oder "LWJ"  Ansonsten ist es schwierig, die objektiv zu vergleichen, obwohl es eigentlich keinen sooo großen Unterschied macht. Bei JOGL muss man immer das GL-Objekt mitschleifen, was etwas lästig sein kann, aber technische Gründe hat (die Fancy bei Bedarf sicher näher erläutern könnte). LWJGL finde ich an manchen Stellen "handlicher" (einfacheres Setup, alles static), aber das soll keine Empfehlung sein. Am besten schaust du dir bei beiden mal kleinere Beispiele an, und schaust dann, was dir eher zusagt.


----------



## Empire Phoenix (23. Okt 2012)

bei jogl würde ich jogl2 nehmen, das alte  ist bischen angegammelt und nichtmehr ganz aktuell.
Ansonsten wenn man die sache realtiv sauber schreibt, ist der wechsel des unterligenden opengl bindings eigentlich relativ machbar. ob ein aufruf durch lwjgl oder durch jogl2 getunnelt ist ist der nativen function im grafikartentreiber egal.


----------



## Marco13 (23. Okt 2012)

Ich bin bei JOGL schon von der neuesten Version ausgegangen  Aber ... der Schritt von JOGL nach LWJGL kann _wesentlich_ leichter sein, als umgekehrt. Wenn man eine komplexere Anwendung mit LWJGL geschrieben hat, und nach JOGL umstellen will, stellt sich auf einmal nämlich genau diese brennende Frage, die ich schon angedeutet hatte: "Wo krieg' ich hier in meiner inneren, versteckten, abgekapselten Modellklasse ein aktuelles 'GL'-Objekt her?" (static oder wie? :autsch: (die Diskussion war andeutungsweise schonmal in einem anderen Thread...))


----------



## zipmar (23. Okt 2012)

ich habe mir inzwischen jogl und lwjgl etwas näher angesehen, und musste feststellen @Marco13: ja es ist irgendwie handlicher in der erzeugung. was nicht schlecht ist.

jogl wirkt etwas überladen, wenn man die ersten gehversuche macht.

irgendwie habe ich auch das gefühl, das lwjgl in der community etwas breiter aufgestellt ist.

ich glaube ich muss mir noch ein zwei tutorials dazu ansehen, um dann eine entscheidung zu fällen.

danke erstmal für die info

grüße


----------



## Kr0e (23. Okt 2012)

Kommt auf deine Anforderung an.

Lwjgl hat OpenAL und meines Wissens war JOAL nicht mehr entwickelt worden seid damals. Hab aber schon laaange nicht mehr damit gearbeitet.

Die OpenCL Unterstützung ist bei JOGL wieder etwas besser meines Wissens. Kann aber sein, dass das nicht mehr Up2Date ist.

Wenn es NUR um openGL geht, nagut... Dann ist es mehr oder weniger Geschmackssache.

Vom Gefühl hält sich Jogl mehr an den Standard. Lwjgl hat ein paar Funktionen "javarisiert", die aufgrund der anderen Syntax zu C durchaus Sinn machen...


----------



## Spacerat (24. Okt 2012)

Kr0e hat gesagt.:


> Kommt auf deine Anforderung an.
> 
> Lwjgl hat OpenAL und meines Wissens war JOAL nicht mehr entwickelt worden seid damals. Hab aber schon laaange nicht mehr damit gearbeitet.
> 
> ...


So ähnlich hätt' ich's auch begründet, nur irgend jemand hätte dann wieder gesagt, was hat denn JOAL oder JOCL mit JOGL zu tun? Btw.: JOGL hält sich an den Java-Standard OOP und LWJGL and den gewohnten prozeduralen OpenXL-Standard.
Aber ganau das ist es, wenn man LWJGL (Das "G" steht für "Game" ) mit JOxL vergleicht. Die Intension solcher APIs dürfte vorzugsweise die 3D-Spieleentwicklung sein, wobei man meistens bei der Grafik anfängt und erst später versucht Sound zu produzieren. Für letzteres wird man aber feststellen, dass sich weder OpenAL selbst, geschweige denn das entsprechende Binding auf der JOxL Seite (also JOAL) seit Jahren auch nur geringfügig weiter entwickelt haben, von JOAL gibt es afaik immer noch keine Möglichkeit, es auf einem Windows 64-Bit-Rechner zum laufen zu kriegen (wenn hier jemand eine kennt, dann hdm). LWJGL dürfte aus diesem Grund etwas populärer sein, sonst ist gibt es da keine all zu grossen Unterschiede, das "gl." wurde ja auch bereits erwähnt.


----------



## Evil-Devil (24. Okt 2012)

Imho ist JOGL an manchen Stellen weniger Nah am Grund. Die haben Animator und solche Dinge. LWJGL ist in erster Linie ein Binding. Das sieht man an der API und der unterstützten Libs. Wer wirklich Sound ala MP3, OGG und Co anbinden will muss es selbst tun. Das wird nicht jeder mögen, aber JOAL ist da imho keine Alternative.

Unterstützt JOGL2 eigentlich OGL4?


----------



## zipmar (24. Okt 2012)

wie ja schon erwähnt, wollte ich alte games bzw. inhalte umsetzen.

anfangen wollte ich nicht gleich mit doom 99 oder so:noe:

ich dachte an sowas altes wie intros aus der alten cracker szene. man hab ich die dinger geliebt.

ich finde das ist ein gute vorbereitung um games zu entwickeln (siehe die entwickler vom neuen Zak MacKracken) <- richtig geschrieben???:L
aber ich glaube man weiss was ich mein. ich kann auch mit Graphics2d daran gehen und bekomme ein ergebnis, jedoch wollte ich gleich mit opengl anfangen.

ich sehe jogl so, geeignet für leistungsdiagramme, cad, etc.
lwjgl, kann ich so nicht einschätzen. wohl in richtung games und was da so noch über bleibt.

für mich ist halt auch die erlernbarkeit wichtig. lwjgl macht man anfangs viel fortschritt und dann stockt es gefühlt. und bei jogl anders herrum. habe ich gerade das gefühl

also bleibt wohl nur:rtfm:


----------



## Guest2 (24. Okt 2012)

Moin,

der OpenGL Teil in JOGL und LWJGL unterscheidet sich im Funktionsumfang nicht wesentlich voneinander. Mit beiden lässt sich alles realisieren, was mit OpenGL zu realisieren ist. Die beiden wesentlichen Unterschiede sind imho:

1.: Bei LWJGL sind einige Funktionen überladen / anders. Das mag aus Java-Sicht auch teilweise sinnvoll sein, kann jedoch auch Verwirrung stiften, da sich eben Unterschiede zwischen der LWJGL-Implementation und der offiziellen Spezifikation / Wiki / Man-Pages / C-Beispielen ergeben.

 2.: Bei LWJGL kommt ein statisches System zum Einsatz. Das ist technisch bis OpenGL ~1.2 auch unter C so. Alle neueren OpenGL-Funktionen sind in C jedoch selbst keine Funktionen, sondern Zeiger auf Funktionen. Und das spiegelt sich bei JOGL im mitgeschleiftem GL-Objekt wieder. (Die konkrete Implementation einer Funktion kann bei OpenGL vom OpenGL-Kontext abhängen. Der OpenGL-Kontext wird dabei durch das GL-Objekt gekapselt.) Unter LWJGL wird das versteckt / ignoriert.

Imho sollte man sich bei beiden einen Lebenszyklus überlegen (init / display / dispose / ggf. resize). Ansonsten gibt es nur noch kleinere Unterschiede, z.B. wie ein Fenster initialisiert und der OpenGL-Lebenszyklus aufgerufen wird. Bei LWJGL schreibt man dazu eine Schleife, bei JOGL implementiert man ein Interface und übergibt dies dem Animator.

Grundsätzlich ist sich beides anzusehen und dann das zu wählen, das einem mehr zusagt die vermutlich beste Variante. 

Viele Grüße,
Fancy


----------

