Java-Grafik #
Beim LUG-Treffen im Limericks am 15.01.09 diskutierten einige LUG-Mitglieder noch zu später Stunde über Spiele-Engines und warum es keine bekannten freien Spiele-Projekte gibt.
- (Java als Gameengine finde ich eine interessante Idee,
und auch z.B. FrozenBubble
als freies Spiel und Crystal Space
/PyGame
als Spieleframeworks mit Java-/Python-Bindung -- MarkusMonderkamp)
Anwesend waren insbesondere ThomasBayen und KaiEhlers und zwei neue LUGer, deren Namen ich mir einfach nicht gemerkt habe. (JanReitz und PatrickFabeck)
Diese Seite hier soll eigentlich nur als Sammlung dienen, um Gedanken und Links zum Thema zusammenzutragen.
Auf der Sun-Seite wird man auf Java3D verwiesen. Das ist eine 3D-API, die von Sun (mit-)entwickelt wurde. Man muss das Paket in sein JRE hineininstallieren (es enthält native Teile, ist also keine reine Java-Lib). Java3d ist wohl eine ganz eigene API, also kein echtes OpenGL. Inzwischen gibt es wohl alternativ noch einige OpenGL-Implementationen. Irgendwo habe ich gelesen, daß Java3D von der Funktionalität etwas hinterherhinkt und deshalb wohl der OpenGL-Weg der bessere sei. Das würde auch das Know-How vereinfachen, weil es zu OpenGL genug Tutorials aus anderen Programmiersprachen gibt. Die Homepage von Java3D ist http://java3d.j3d.org/
Die Mutterseite http://j3d.org/
ist eine sehr gute Einstiegsseite für verschiedene Java-3D-Projekte. Interessant sieht für mich auch Java OpenGL (JOGL) aus.
Ich habe mir Java3D 1.5 installiert und ein Testprogramm aus dem Tutorial in Eclipse übersetzt. Beim Start meckert dieses nur, daß es GLX 1.3 braucht und ich nur 1.2 installiert habe. Kann das jemand erklären, der sich damit besser auskennt? Angeblich kann man mit "glxinfo" feststellen, welche Möglichkeiten ein X-Server hat. Kann mir da mal jemand mit einem aktuelleren System (insbes. X-Server) sagen, ob er da mehr als 1.2 angezeigt bekommt? Oder ist das von der Grafikkarte abhängig? Kann doch nicht angehen, daß unsere Anwendung hinterher auf manchen Grafikkarten einfach gar nicht läuft?!? Ich werde mal in Richtung JOGL weiterforschen; vielleicht bekomme ich dann raus, was der Unterschied zwischen 1.2 und 1.3 ist.
In OpenGL 1.2 wurde z.B. das Multitexturing hinzugefügt, in 1.3 und 1.4 kamen dann noch Support für Vertex- und Fragmentprogramme sowie Support für Vertexbuffer-Objekte hinzu. Ein rein in Java programmiertes 3D-Spiel dürfte keine befriedigende Performance liefern - das liegt nicht an dem interpretierten Java-Bytecode, sondern am Garbage-Collector den man nicht frei kontrollieren kann. Bereits nach einigen Sekunden Laufzeit beginnt dieser zu arbeiten und verursacht unangenehme Ruckler im Spielablauf. Eine Lösung hier wäre es möglicherweise in C/C++ über das JNI-Interface das Rendering und die Behandlung von Kollisionserkennung zu implementieren?! -- StefanGaffga
Wenn ich Zuhaus bin schau ich mal nach was mein glxinfo rausgibt, hab ne recht aktuelle NVidia mit proprietärem Treiber. Anm. zum Java-GC: Ich habe mal mit dem Tao-Framework unter Mono rumprobiert, und hatte keine probleme mit abfallender Performance, vieleicht kann man die GC soweit unterdrücken das es erträglich ist. -- JanReitz
Die beste Implementation von OpenGL in JAVA dürfte das jogl-Projekt sein. --KaiEhlers--
- Links
- http://j3d.org/
- Java 3D Community Site
- http://java3d.j3d.org/
- Java3D von Sun
- http://opengl.j3d.org/
- JOGL (auch von Sun unterstützt)
- https://jogl-demos.dev.java.net/
- JOGL Demos (einige laufen bei mir, einige nicht - je nach "Requirements")
- http://bytonic.de/
-- 3D Spiel in Java Quake2 Clone
- https://lg3d.dev.java.net/de/index.html
- Glass Desktop
- http://nehe.gamedev.net
OpenGL Tutorials in etlichen Sprachen
- http://icculus.org
Einige 3D Engines/Spiele als OpenSource (auch sehr Fortgeschrittene ala Quake 3 oder Decent)
- https://jogl.dev.java.net
hier kann man die jogl-Dateien herunterladen.
- Kategorien
- KategorieJava