# Suche Tutorial zu "purem" OpenGL mit Java



## Förster44 (16. Jul 2011)

Huhu,
nachdem ich mich in den letzten 3 Monaten mit einem Einsteigerkurs in Java befasst habe (vorher hatte ich keinerlei Ahnung von Programmieren und spreche dementsprechend auch keine anderen Programmiersprachen), suche ich nun nach einem Tutorial zu OpenGL mit Java. Es steht für mich bereits fest, dass ich mit LWJGL arbeiten werde, allerdings wird in dem offiziellen Tutorial zu LWJGL extra erwähnt, dass es sich nur mit der Bindung von OpenGL befassen werde, zu OpenGL solle man sich bitte ein extra Tutorial suchen.
Dummerweise befassen sich nahezu alle von mir gefundenen Tutorials zu OpenGL entweder mit anderen OpenGL-Bindungen in Java oder mit anderen Programmiersprachen - und da ich diese nicht beherrsche und auch die Unterschiede in den Sprachmerkmalen wohl hinderlich sein werden, sind diese wenig hilfreich.
Ich wäre sehr dankbar für einen Link zu einem guten Tutorial und entschuldige mich auch schonmal dafür, falls ich was übersehen haben sollte und meine Frage hier nicht hingehört oder mich auch einfach bei der Google-Suche blöd angestellt haben sollte^^

Edit: Hoppla, da bin ich bei der beim Schreiben des Beitrags abgelaufenen Sitzung wohl im Forenbereich verrutscht :/ Eigentlich wollte ich das hier in den Bereich "AWT, Swing und SWT" schreiben - Die Entscheidung, wo der Thread hier endgültig landet, überlasse ich mal einem Moderator


----------



## Fu3L (16. Jul 2011)

Mit OpenGL bist du hier denke ich richtiger 

Ich würde mich nicht zu sehr davon abschrecken lassen, dass die anderne Tutorials in anderen Sprachen verfasst sind. Java ist stark von C und C++ beeinflusst, es ähnelt sich also wohl eine Menge. Und die OpenGL Bindung ist, so wie ich es bei LWJGL gelesen habe, extra so angelegt, dass sie der Nutzung in C und C++ Programmen ähnelt...

Selbst habe ich mich mit reinem OpenGL auch nie beschäftigt, aber eine gute Anlaufstelle dürfte ja wohl OpenGL sein^^

Bestimmt kennt aber jemand auch noch einen direkteren Link^^


----------



## Landei (16. Jul 2011)

Neben LWJGL gibt es noch JOGL als reine OpenGL-Bindung für Java. Kann aber nicht sagen, was "besser" ist.


----------



## Förster44 (16. Jul 2011)

@Fu3L: Danke schonmal für deine Antwort, die anderssprachigen Tutorials werde ich mir später vielleicht nochmal anschauen ... 
Der Link hilft mir leider nicht weiter, da ich nur das SDK, aber keine Tutorials entdecken kann :S

@Landei: Ich weiß dass es auch JOGL gibt, aber wie ich schon erwähnte, steht für mich bereits fest mit LWJGL zu arbeiten


----------



## Fu3L (16. Jul 2011)

Die Frage ist ja auch: Kann ich OpenGL ohne eine Programmiersprache nutzen? Ich glaube nein, wobei das mehr geraten ist^^ 
Es gibt zwar die OpenGL Shading Language, aber man braucht doch immer noch ein ausführendes Programm, nehme ich an?^^ Das hieße: "'pures' OpenGL wirst du so schnell nicht bekommen."
Hierzu überlasse ich mal Marco oder Fancy das Feld^^


----------



## Marco13 (16. Jul 2011)

Tatsächlich ist der Unterschied zwischen JOGL und OpenGL oder JOGL und LWJGL IMHO deutlich größer, als der Unterschied zwischen LWJGL und C-OpenGL. Das heißt, mit LWJGL schreibt man fast das gleiche hin, wie bei OpenGL in C. Aber selbst bei JOGL ist der größte Unterschied im Kern nur, dass man das GL-Objekt immer herumreichen muss. Deswegen ist selbst dieser Unterschied für das eigentlich _wichtige_ bei OpenGL (nämlich die API und die Abläufe zu kennen) ziemlich irrelevant.

Wenn man sich z.B. sowas wie OpenGL:Tutorials:Java:LWJGL:Introduction - GDWiki ansieht (oder ähnliche Seiten) dann findet man dort einen "Stub", eine basisklasse die man i.a. erstmal 1:1 übernehmen kann. Bei JOGL und C sehen diese "Stubs" komplett anders aus, aber auch die kann man jeweils von irgendwo übernehmen. Die meisten Unterschiede stecken in diesen "Stub", und man kann sagen: Wenn man erstmal das berühmte erste Dreieck auf dem Bildschirm hat (egal ob mit OpenGL, JOGL oder LWJGL) dann hat man irgendwo eine "initGL"-Methode und eine "renderGL"-Methode und deren Inhalte sind dann bei allen Ansätzen praktisch gleich.

Es ist für den Anfang also legitim, sich für einen der Ansätze zu entscheiden (z.B. LWJGL), und dann ein "belieibiges" OpenGL-Tutorial zu suchen, mit dessen Hilfe man seine "initGL" und "renderGL"-Methoden mit Leben füllen kann. 

Die Sorge, dass "Unterschiede in den Sprachmerkmalen" zu schwierigkeiten führen, ist IMHO weitgehend unbegründet. Es gibt diffizile Unterschiede, zwangsläufig (Buffer-Handling und Pointer-Sachen, eben Sprachspezifisches) aber wenn man in einem C-Tutorial eine funktion sieht wie

```
float *buffer =...
glDoSomething(buffer);
```
dann sieht man schon an der Methodensignatur, dass man dort bei JOGL oder LWJGL eben keinen float* übergeben muss, sondern einen (direct) FloatBuffer. 

Und wenn DOCH mal Fragen auftauchen wie "In dem C-OpenGL-Tutorial steht das so-und-so, wie geht das in Java?" gibt's ja immernoch Fancy


----------



## Empire Phoenix (16. Jul 2011)

Wenn es mehr darum geht ein Spiel zu schreiben als OpenGl zu lernen würde ich mir noch die diversen Java 3d Engines angucken. (zb JMonkeyEngine)


----------



## Spacerat (17. Jul 2011)

Also ich tendiere inzwischen mehr zu LWJGL als zu JOGL und zwar aus folgenden Gründen. LWJGL vereint afaik 3 APIs ineinander - OpenGL, OpenAL und OpenCL. Einen Einstieg in OpenGL bietet sowohl JOGL als auch LWJGL. Wenn man sich aber weiter damit befasst, möchte man früher oder später auch z.B. die 3D-Soundhardware für anspruchsvollere Games verwenden. Nutzt man bisher JOGL, hat man dabei aber bislang ein Problem, was aktuelle Hardware angeht, da z.B. JOAL von einigen 64-Bit Betriebssystemen nicht unterstützt wird (z.B. Windows Vista oder 7). Eine Weiterentwicklung von JOAL findet zur Zeit afaik auch nicht statt. LWJGL hat nur den verschwindend geringen Nachteil, dass es keine LightWeightComponents unterstützt und dies wohl auch in Zukunft nicht tut, aber zumindest bekommt man 64-Bit Libs für alle gängigen Platformen. Als Einsteiger Tutorials waren bisher immer die Neon Helium Tuts von GameDev zu empfehlen, aber deren Seite wurde vor kurzem umgestellt, so dass ich diese grad' nicht wieder finde (noch nicht intensiv genug gesucht ).


----------



## Kr0e (17. Jul 2011)

Die besten Tutorial fuer pure OpenGL sind die von Neon Helium!
Ist natuerlihc mit C aber was solls, ...OpenGL ist ja quasi glecih und ansonsten bei Merkwuerdigkeiten vlt einfach mal googlen...

Ich denke, dass es generell auf jeden Fall Sinn macht reines OpenGL zu lernen, immerhin nutzen die Engiens das ja auch und wenn dann mal ein Problem aufkommt (Was in der Tat haeufig passieren kann) sind OGL Kenntnisse meistens sehr hilfreich. Es gibt auch Faelle, wo Engines voellig unnoetig sind, z.B. bei einem Videorenderer...


Gruss,

Chris


----------



## Evil-Devil (18. Jul 2011)

Um einen Einstieg in LWJGL zu finden kann ich nur das Wiki empfehlen. Zwar ist die Pflege in letzter Zeit mal wieder etwas träge geworden, doch wir schreiben hier und da rein. Alternativ einfach in den IRC Kanal von LWJGL kommen. Dort findet man fast immer eine Antwort auf eine Frage 

Wiki: Main Page - LWJGL
IRC: #lwjgl @freenode.net

@Pures OpenGL: Am besten kaufst du dir ein Buch. Mittlerweile muss man ja unterscheiden ob man die veraltete API lernt oder sich nur noch auf den Shader Bereich konzentriert. Für letzteres empfinde ich die OpenGL Super Bible recht gut. Einzig Manko ist imho das bereits vieles gekapselt ist und man es entsprechend nach Java zurück entwickeln muss. Sobald das aber erledigt ist, kann man sehr gut mit dem Buch arbeiten


----------



## Spacerat (18. Jul 2011)

@Kr0e: Da sind die Nehe's ja... Danke 

@TS: Die Quelltexte der meisten Tutorials dort lassen sich im übrigen auch einzeln für LWJGL und JOGL herunterladen, ganz am Ende eines jeden.


----------

