Einstieg in LWJGL

zondan

Mitglied
Hallo!

Ich habe vor kurzem mit Java angefangen und würde gerne in LWJGL einsteigen. Es geht mir weniger darum Spiele zu schreiben, sondern eher die Möglichkeit zu haben sowohl in 2D als auch in 3D zu programmieren.

Das könnte ich vermutlich auch mit Swing machen, aber ich glaube da stößt man sehr schnell an Grenzen was Geschwindigkeit angeht.

Bevor ich zu Java kam hab ich in Python mit Pygame programmiert und es hat mir Spaß gemacht einfache Sachen wie Gravitation oder Stöße nachzubilden. Jedoch wurden diese Programme sehr schnell extrem unübersichtlich und fehleranfällig. Unter anderem vermutlich weil ich komplett auf objektorientiertes Programmieren verzichtet habe.

Was ich jetzt suche ist einfach einen einfachen Einstieg. Vor allem möchte ich bevor ich anfange in einer IDE zu programmieren(momentan bevorzuge ich NetBeans und nutze das für Swing Programme) wissen wie man einen Quelltext der LWJGL nutzt einfach mit javac kompiliert.
Ich hab versucht das mit Hilfe von dem Wiki-Eintrag herauszulesen aber da das Testprogramm vom Wiki sofort einen Laufzeitfehler erzeugt denke ich das ich die Bibliothek nicht mal richtig installiert hab.
Code:
run:
Exception in thread "main" java.lang.NoClassDefFoundError: nblwjgl/Main
Caused by: java.lang.ClassNotFoundException: nblwjgl.Main
  at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: nblwjgl.Main. Program will exit.
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

Also was ich suche:
  • Wie kompiliert man einen Quelltext der LWJGL nutzt per Hand?
  • Wie sieht ein minimales Programm mit LWJGL aus. Also eines das nur ein Fenster erzeugt.
  • Wenn ich soweit bin. Wie zeichne ich einen Punkt oder eine Linie, einen Kreis. Halt Grundlegende Figuren.
  • Ich fange ich Tastatur/Maus Events ab?(Wobei ich das letzte vermutlich durchs Wiki lösen kann)

Ich hoffe ihr könnt mir helfen und freue mich schon auf eure Antworten. :)

LG
Zondan
 

Marco13

Top Contributor
Das liegt erstmal nicht an LWJGL - der package- oder Klassenname stimmt einfach nicht. Estelle die Klasse ggf. im "default"-Package (also OHNE packagenamen), dann sollte man sie mit
javac -cp ".;lwjgl.jar" Main.java
compilieren und mit
java -cp ".;lwjgl.jar" Main
starten können.

Objetkorientierung und LWGL (bzw. OpenGL allgemein) beißt sich aber auch ;) Das Potential für Fehler und Unübersichtlichkeit ist enorm ...
 

zondan

Mitglied
Danke für die Antwort.
Was bedeutet der Parameter bei -cp genau?
Also
Code:
".;lwjgl.jar"
Der Punkt steht wohl für das aktuelle Verzeichnis gefolgt von einem Semikolon und dann einer Bibliothek.
Da ich Linux nutze muss ich anscheinend einen Doppelpunkt nutzen.

Wenn ich es so
Code:
javac -cp ".:lwjgl-2.8.3/jar/*" Main.java
kompiliere dann kompiliert es zumindest ohne Fehler.

Heißt das das man verschiedene Bibliotheken zb so:
Code:
javac -cp ".:lwjgl-2.8.3/jar/lwjgl.jar:lwjgl-2.8.3/jar/lwjgl_util.jar" Main.java
einbinden kann?

Funktionieren tut es zumindest.

Wenn ich es jetzt so:
Code:
$ java -Djava.library.path="lwjgl-2.8.3/native/linux/" -cp ".:lwjgl-2.8.3/jar/lwjgl.jar:lwjgl-2.8.3/jar/lwjgl_util.jar" Main
ausführe, funktioniert es.

Das -Djava.library.path hab ich einfach nur aus dem Wiki kopiert, weiß jedoch nicht ganz für was das steht. Es ist anscheinend der Path ist wo native, also non-java Bytecode, Bibliotheken zu finden sind.
Stimmt das so?

Ok, wie würde jetzt ein minimaler Java-Code aussehen der ein LWJGL Fenster erstellt und sagen wir mal beim drücken von Escape beendet wird.

Aja zur Objektorientierung: Ich hab noch nicht wirklich viel Erfahrung damit, aber ich finde es ist wesentlich übersichtlicher mit Klassen und Objekten zu programmieren als nur über Funktionen und teils Globalen Variablen.
Natürlich weiß ich nicht wie das in Verbindung mit LWJGL ist, aber mein größtes Problem bei Pygame war schlussendlich das ich bei jeder noch so kleinen Veränderung das komplette Programm überdenken und teilweise neu schreiben musste. Sicher war das meine Schuld das ich es nicht gut genug in Funktionen gekapselt habe aber naja. Das wäre hier denke ich weniger ein Problem, zumindest von dem was ich bis jetzt erlebt habe.
 

Marco13

Top Contributor
Mit -cp definiert man den Classpath - also alles, wo nach .class-Dateien gesucht werden soll (und eben nicht nur verzeichnisse, sondern auch JARs - was eigentlich nur ZIPs mit .class-Dateien drin sind). Das mit dem library.path stimmt auch (braucht man nicht, wenn man alles in ein Verzeichnis klatscht, aber so ist es natürlich "aufgeräumter").

Zu einem "Mini-Beispiel": Eigentlich sind die Tutorials von Main Page - LWJGL da ja passend, das erste Enthält schon ein Mini-Beispiel: LWJGL Basics 1 (The Display) - LWJGL
 

zondan

Mitglied
Ok, ich nehme mal an das wenn man das Programm einfacher ausführbar machen will, man einfach ein Aufrufprogramm schreibt das dann das eigentliche Programm mit all den Parametern aufruft.
Den man könnte ja nicht von einem Benutzer erwarten das er die Parameter von Java kennt.
Oder gibt es eine einfachere Möglichkeit so das der Benutzer nur noch die jar Datei starten muss?
Natürlich weiß ich nicht wie man manuell eine jar Datei erstellt, aber das ist ein anderes Thema. ;)

Danke auf jedenfall für deine Hilfe, ich werde mal die Beispiele im Wiki machen.
 
E

Executable

Gast
Den man könnte ja nicht von einem Benutzer erwarten das er die Parameter von Java kennt.
Oder gibt es eine einfachere Möglichkeit so das der Benutzer nur noch die jar Datei starten muss?
Ding!
Und ein Doppelklick genügt,
man kann die jar dann auch noch zur exe verschandeln usw.

Viele Grüße
 
S

Spacerat

Gast
Objetkorientierung und LWGL (bzw. OpenGL allgemein) beißt sich aber auch ;) Das Potential für Fehler und Unübersichtlichkeit ist enorm ...
[ot]Objektorientierung und Übersichtlichkeit werden stets völlig überbewertet, erst recht, wenn man versucht, ein Binding auf objektorientiert umzugestalten. LWJGL und JOGL sind dafür perfekte Beispiele. Das Fehlerpotential bei JOGL ("OOP-Versuch" für OpenGL) liegt geringfügig über dem von LWJGL, gerade weil man OpenGL auf eine doch eher ungewohnte Art programmiert.
Beispiel: ("import static" in Java vorrausgesetzt)
in C, C++ und LWJGL heisst es [c]glEnable(GL_BLEND);[/c]
in JOGL [c]gl.glEnable(GL_BLEND);[/c]
in C, C++ und LWJGL heisst es [c]gluGetString(GLU_VERSION);[/c]
in JOGL [c]glu.gluGetString(GLU_VERSION);[/c]
Ich finde Objektorientiert macht nicht wirklich immer Sinn.[/ot]
 
G

Guest2

Gast
Moin,

in C, C++ und LWJGL heisst es [c]glEnable(GL_BLEND);[/c]
in JOGL [c]gl.glEnable(GL_BLEND);[/c]

das sieht zwar auf den ersten Blick so aus, ist aber für den größten Teil der OpenGL Funktionen nicht korrekt. Alle "höheren" OpenGL Funktionen sind über Funktionszeiger realisiert, welche erst während der OpenGL Kontexterzeugung auf eine konkrete Implementierung gesetzt werden.

Dabei steht es den OpenGL Implementationen frei für jeden erzeugten OpenGL Kontext die Funktionszeiger auf andere Implementierungen (Funktionsadressen) zu setzten.

Es handelt sich also keinesfalls um statische Funktionen sondern um das C äquivalent einer objektorientirten Programmierung.

Der JOGL Ansatz ist insofern korrekt, da das dortige GL-Objekt einem GL-Kontext entspricht und die darüber angesprochenen OpenGL Funktionen dem GL-Kontext zugehörigen Funktionszeigeren entsprechen.


[*]Wenn ich soweit bin. Wie zeichne ich einen Punkt oder eine Linie, einen Kreis. Halt Grundlegende Figuren.

Vielleicht schon mal um spätere Missverständnisse vorzubeugen: In OpenGL ist die grundlegende Struktur ein Dreieck. Alles, was kein Dreieck ist, ist erstmal verdächtig.


Viele Grüße,
Fancy
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
L Einstieg Objektorientierung Java Basics - Anfänger-Themen 10
D Java Einstieg Java Basics - Anfänger-Themen 4
G JAVA Einstieg Java Basics - Anfänger-Themen 26
X Erste Schritte Einstieg ins Programmieren Java Java Basics - Anfänger-Themen 2
V Erste Schritte Hilfe gesucht beim einstieg in Java und erste Aufgaben aus der Berufsschule Java Basics - Anfänger-Themen 9
M Wie schaffe ich den Einstieg? Java Basics - Anfänger-Themen 2
T Einstieg in "grafische Progammierung" + Rechnen in Flussdiagramm Java Basics - Anfänger-Themen 2
B Einstieg in swing GUI Java Basics - Anfänger-Themen 7
R Einstieg in Programmierung Java Basics - Anfänger-Themen 8
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
W Einstieg Objektorientierung Java Basics - Anfänger-Themen 4
R Erste Schritte Einstieg Java Basics - Anfänger-Themen 4
Grejak OOP Einstieg in Objekt-Orientierte-Programmierung Java Basics - Anfänger-Themen 3
E Hilfe beim Einstieg Java Basics - Anfänger-Themen 46
R Einstieg Java Basics - Anfänger-Themen 4
F Einstieg Java Basics - Anfänger-Themen 3
Bastler66 Erste Schritte Einstieg JDK Java Basics - Anfänger-Themen 3
S Erste Schritte Der Einstieg in Java Java Basics - Anfänger-Themen 8
R Einstieg Webentwicklung Java Basics - Anfänger-Themen 3
A Einstieg in Java. Java Basics - Anfänger-Themen 21
N Java Einstieg Schiffe versenken Java Basics - Anfänger-Themen 4
C JAVA - Einstieg mit Eclipse - Update Sites und Ähnliches Java Basics - Anfänger-Themen 6
A Datenbanken - ein Einstieg Java Basics - Anfänger-Themen 4
A Einstieg in JSF Java Basics - Anfänger-Themen 4
A Einstieg in die Programmierung Java Basics - Anfänger-Themen 20
G Einstieg EJB3 Java Basics - Anfänger-Themen 2
M XML-Einstieg Java Basics - Anfänger-Themen 4
M Einstieg in die Webentwicklung mit Java? Java Basics - Anfänger-Themen 16
D Einstieg Java Basics - Anfänger-Themen 4
S MS Visual Studio.NET und Einstieg in Visual JAVA# Java Basics - Anfänger-Themen 27
P Java beginner - Buch: Java- Einstieg für Anspruchsvolle Java Basics - Anfänger-Themen 6
G Einstieg in Java Java Basics - Anfänger-Themen 5
S Was zum Einstieg probieren? Java Basics - Anfänger-Themen 8
S Fragen zum Einstieg Java Basics - Anfänger-Themen 9
K Probleme beim Einstieg Java Basics - Anfänger-Themen 2
S Tipps zum Einstieg in Java Java Basics - Anfänger-Themen 30
A Hilfe beim Java-Einstieg Java Basics - Anfänger-Themen 3
J Java-Einstieg ;-) )) Java Basics - Anfänger-Themen 2
Grevak LWJGL 3 Java Basics - Anfänger-Themen 2
S LWJGL - Matrix vom Matrixstack laden Java Basics - Anfänger-Themen 3
J [LWJGL]Fonts mit der glBlendFunc() Java Basics - Anfänger-Themen 3
F Eclipse und LWJGL - Bringe workspace nicht zum laufen Java Basics - Anfänger-Themen 2
J LWJGL tutorials auf deutsch Java Basics - Anfänger-Themen 5
J lwjgl - Tetraeder Anzeigefehler Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben