Javas 2D-API resp. JavaFX ausreichend für Grafikprogrammierung

Robocopy

Cadet 4th Year
Registriert
Dez. 2021
Beiträge
95
Hallo Freunde,

Ich habe noch keine Ahnung von Grafikprogrammierung, möchte mich aber dort jetzt einarbeiten und weiß, dass es für Anfänger nicht ungewöhnlich ist, erste Gehversuche in diesem Bereich mit OpenGL zu machen. Ich möchte aber anmerken, dass ich Java-Entwickler bin und deswegen mit dieser Sprache erste Experimente in diesem Bereich machen möchte.

Und nun zu meiner Frage: Es gibt eine in AWT/Swing integrierte Java2D-API, und für 3D-Zeug gibt es auch noch eine (veraltete) 3D-API, aber noch interessanter - JavaFX, welches bis heute weiterentwickelt wird.

Die Vorteile eben genannter Frameworks liegen auf der Hand: Sie sind plattformunabhängig und stammen aus dem Java-Ökosystem. OpenGL stammt nicht aus dem Java-Ökosystem und muss für Cross-Plattform-Entwicklung wohl aufwendiger konfiguriert werden.

Eigentliche Frage

Was meint ihr? Kann man erste Erfahrungen in der Grafikprogrammierung mit Java2D bzw. JavaFX sammeln, oder ist das aus eurer Sicht Zeitverschwendung, und man solle gleich mit OpenGL beginnen?

Für sowas interessiere ich mich konkret

Roguelike
Isometrie

Nachsatz

Direct3D u. drgl. kommt wegen Plattformabhängigkeit nicht in Frage.
 
Willst du 3D oder 2D Grafik machen?

Wenn es um Spiele geht würde ich eher mit einer Engine für Spiele anfangen. Da findest du auch eher mehr Informationen darüber wie man bestimme spiele-tyische Sachen implementiert. Unity und Godot sind so die von denen ich gehört habe, aber ich hab keine Erfahrung damit.

Für reine 2D Grafik ist HTML Canvas auch etwas das einfach zugänglich ist. OpenGL ist eine Sache für sich, egal aus welcher Sprache man die benutzt ist das ein riesen Brocke den du lernen musst wenn du auf dieser low-level Ebene Grafikprogrammierung machst.
 
Ich bin selbst Java-Programmierer. Aus meiner Sicht ist Java3d (ist ein wrapper für opengl und/oder direct3d) tot - Artikel und Bibliotheken sind Ur-Alt. Nichts desto trotz gibt es Minecraft.

Wenn dir Java wichtig ist würde ich recherchieren wie Minecraft gemacht ist oder ob es andere neue Beispiele gibt.
Wenn dich Spiele interessieren würde ich mir eher Unity oder Unreal Engin anschauen. Ich denke Spiele mit Java machen ist nach wie vor sehr exotisch - mit Minecraft als sehr erfolgreichem Beispiel.

Reines 2d wirst musst aus meiner Sicht direkt auf der 2d API operieren. JavaFX kann dir hier nur eingeschränkt helfen - für Fenster oder ui elemente (für Spiele hässliche).
 
Robocopy schrieb:
dass ich Java-Entwickler bin

Tu dir einen Gefallen und benutz bitte Unity dafür. Als Java-Entwickler wirst du super leicht in C# reinkommen und hast damit eine viel modernere Basis die noch aktiv weiterentwickelt wird und eine aktive Community hat
 
Unitiy werde ich mir auch mal anschauen - ich möchte aber das Ganze von der Pike auf verstehen, oder "from Scratch" wie man in unseren Kreisen sagt. Natürlich nicht, weil ich glaube, ich könnte Kraft meiner Wassersuppe und alleine irgendwelche großartigen Spiele programmieren, sondern weil ich die Technik dahinter tiefgehend verstehen möchte. Und dazu muss man dann schon mit OpenGL oder Java2D oder drgl. starten.

Zurzeit aber studiere ich ein paar Open-Source-Projekte wie Minetest oder Widelands. Da lernt man auch einiges.

Unitiy u. drgl. würde ich dann nutzen, wenn ich wirklich ein ernsthaftes Projekt machen möchte. ABer anschauen werde ich mir das Ding auch schonmal.

Nachsatz

Ich bin in anderen Programmiersprachen kein blutiger Anfänger und sehe mich durchaus in der Lage, Code in Python, C, C++, C#, Lua oder anderen Sprachen zu schreiben, ohne mich großartig einarbeiten zu müssen, zumal ich in all den Sprachen auch schon Code geschrieben habe.
 
Zuletzt bearbeitet:
Dann ist https://www.lwjgl.org das Richtige, wenn du auf OpenGL Ebene beginnen willst. LibGDX wäre eine Stufe darüber, das nutzt LWJGL, ist aber schon eher Highlevel und nimmt dir vieles ab. Siehe https://www.lwjgl.org/frameworks.

Die von dir genannten Komponenten sind für die Spieleentwicklung im übrigen ungeeignet.

Es ist absolut nichts falsch daran auf der OpenGL Ebene anzufangen, nur dann kann man überhaupt verstehen was da so alles passiert und wie Dinge zusammenhängen.

Unity setzt ganz oben an, da lernst du nicht wirklich etwas über die darunterliegenden Funktionalitäten. Was auch i.O. ist, wenn man Inhalt schaffen möchte.
 
  • Gefällt mir
Reaktionen: Robocopy
Robocopy schrieb:
das Ganze von der Pike auf verstehen, oder "from Scratch" wie man in unseren Kreisen sagt
Dann fang mit OpenGL an. Es gibt sehr viele, sehr gute Infos dazu online. Du musst nur etwas aufpassen, keine zu alten Tutorials herzunehmen. Ka ob das heute noch ein Problem ist, als ich mir OpenGL reingezogen hatte damals (vor knapp 10 Jahren), da schwirrte noch altes Zeug herum (vermutlich 3.x?).
Aber jedenfalls, da lernst du wie du Bits auf die Grafikkarte schiebst damit da am Ende was in 3D raus kommt. Wie gesagt gibt es hervorragende Ressourcen dafür (auf Englisch) die dich gut an die Hand nehmen. Es ist auch ein wenig Mathe involviert, hauptsächlich lineare Algebra bzw. Matrizen.
 
Zurück
Oben