PDA

View Full Version : [Discussione] Binding OpenGL/OpenAL. Quale scegliere?


fek
16-09-2005, 11:25
Questi alcuni pareri:

Allora ragazzi, ho dato un'occhiata alla documentazione di SDLJava, LWJGL e JOGL.

SDLJava è sicuramente la libreria più ricca, piena di funzionalità non legate strettamente a OpenGL, ma un po a tutto il discorso multimediale. Del resto chi conosce SDL, di certo non ha bisogno di maggiori informazioni al riguardo. Un po carente solo sul discorso audio posizionale e libreria matematica (matrici, vettori, operazioni su di essi, ecc....).

LWJGL è più strettamente connessa ad OpenGL e ad OpenAL (che non ho visto su SDLJava) e supporta anche DEVIL, una libreria che consente di gestire facilmente le immagini per il caricamento, cattura screenshots e chiacchiere varie. E' più ricca di SDLJava dal punto di vista matematico, ma non fornisce supporto diretto a gestione di CDROM o cosette simili, supportate invece in SDLJava.

JOGL è, invece, strettamente legato alla JDK di Java, è il binding ufficiale ad OpenGL di Sun, ma anche quello che, secondo me, fornisce meno funzionalità accessorie come librerie matematiche, gestione audio, ecc... Un punto a suo favore è il supporto al CG, anche se non penso che in questo progetto questo aspetto sia fondamentale (il GLSL si può usare in tutte e tre le librerie considerate).

La scelta di una delle librerie è strettamente legata al tipo di sviluppo che si vuole improntare di questo progetto. Io sceglierei o SDLJava o LWJGL.


Si però guardate un po qui':
http://192.18.37.44/forums/index.php?topic=10813.0


Per l'audio c'è JOAL, che è sempre il binding ufficiale di Sun a OpenAL.

A questo punto, visti gli obiettivi del progetto e la facilità di utilizzo di SDLJava, propenderei più per questa libreria.


Raffaele, pensi sia possibile usare alcuni dei servizi di LWJGL, assieme a JOGL e JOAL?

Sono molto indeciso, ma propendo sempre piu' verso lo standard se e' possibile. E usare Cg da Java mi intriga ;)

Pero' non vorrei rinunciare ad alcuni servizi che velocizzerebbero' lo sviluppo.

cdimauro
16-09-2005, 11:55
Secondo me dovremmo scegliere fra JOGL + JOAL e SDL.

JOGL e JOAL se vogliamo mettere al primo posto lo "standard", che ha abbracciato Sun. Svantaggi: sono più complicate da usare.

SDL se vogliamo utilizzare uno strumento semplice e che ci permetta di procedere più velocemente nella scrittura del codice. Svantaggi: non è standard, anche se supportato da diverse piattaforme.

fek
16-09-2005, 12:11
In che misura sono piu' complicate da usare rispetto a SDL secondo te? E rispetto a LWGL Raffaele?

^TiGeRShArK^
16-09-2005, 12:17
da quello che ho visto anche dal link di mjordan mi pare che JOGL è ottimo per l'integrazione completa con swing....cosa che però a noi non interessa assolutamente dato che dovremmo comunque lavorare + a basso livello.
SDL non l'ho vista molto....ma se è piu' semplice ... ben venga....
LWJGL non ho idea.......

Quindi...io direi SDL con l'opzione di LWJGL se ne vale la pena per qualche altro motivo.......

VICIUS
16-09-2005, 12:24
Io sono per l'utilizzo di SDL.

ciao ;)

DanieleC88
16-09-2005, 13:01
Io sono per l'utilizzo di SDL.

ciao ;)
Idem.

cisc
16-09-2005, 13:13
per me va bene anche sdl, anche perchè ho visto che è molto semplice, ma JOGL non mi dispiacerebbe nemmeno, specialmente se è avviata a diventare la scelta standard della Sun

^TiGeRShArK^
16-09-2005, 14:00
per me va bene anche sdl, anche perchè ho visto che è molto semplice, ma JOGL non mi dispiacerebbe nemmeno, specialmente se è avviata a diventare la scelta standard della Sun
io, se non avessimo dovuto scrivere un gioco, sarei stato il primo a spingere x JOGL.
Ma, a quanto ho letto dal link postato da mjordan, i vantaggi dell'utilizzo di JOGL sono dovuti essenzialmente alla perfetta integrazione con Swing che si avrà con Mustang (Java 6). Ad oggi ci troveremmo comunque ad utilizzare gli heavy-weight components per accedere direttamente all'hardware(sarebbero i GLCanvas mi pare sotto JOGL), piuttosto che i light-weight components usati da swing.
E a quanto pare, con la versione corrente di JOGL, ci sono delle penalità prestazionali ad utilizzare la seconda opzione.
Ciò non toglie che come ho un pò di tempo e di voglia credo che inizierò ad impararmi JOGL, dato che lo vedo piuttosto promettente per il futuro ;)

[EDIT]
Dimenticavo....sempre da quel link sembrerebbe che Java AL (o come 'aspita si kiama:p) non venga supportato adeguatamente e sia rimasto un pò indietro con lo sviluppo se confontato con jogl.

Vifani
16-09-2005, 15:26
Inserirò alcuni esempi di programmazione molto semplici con LWJGL e JOGL, dopodiché decideremo.

Gica78R
17-09-2005, 02:44
:eek: Avete rimosso tutte le lib dal repository! :D

A proposito di JOGL, non so se e' importante per noi, pero' riporto una cosina dalle Platform notes della user's guide trovata qui (https://jogl.dev.java.net/nonav/source/browse/*checkout*/jogl/doc/userguide/index.html?rev=HEAD&content-type=text/html) :

Mac OS X

There are some problems with visual artifacts and stability problems with some of the Jogl demos on Mac OS X. It appears that at least some of these problems are due to bugs in Apple's OpenGL support. Bugs have been filed about these problems and it is hoped they will be addressed in the near future.


solo che non capisco a quando risale questa documentazione. Magari nel frattempo hanno risolto. :confused:

DanieleC88
17-09-2005, 14:52
:eek: Avete rimosso tutte le lib dal repository! :D
Si, hanno purgato del tutto SDL perché è stata scartata.

DanieleC88
17-09-2005, 15:23
A proposito, alla fine cosa si è deciso? LWJGL o JOGL+JOAL?

Gica78R
17-09-2005, 15:27
A proposito, alla fine cosa si è deciso? LWJGL o JOGL+JOAL?
Ad occhio e croce, visti i task, direi JOGL+JOAL, ma non so se la decisione e' definitivissima... :p

fek
17-09-2005, 15:36
A proposito, alla fine cosa si è deciso? LWJGL o JOGL+JOAL?

Stiamo aspettando gli ultimi spike e poi prenderemo la decisione entro lunedi/martedi', di modo che possiate iniziare con i task.

Vifani
17-09-2005, 17:11
Stiamo aspettando gli ultimi spike e poi prenderemo la decisione entro lunedi/martedi', di modo che possiate iniziare con i task.

Ho completato quello di LWJGL. Non l'ho ancora inserito però sul CVS. Domani completo quello di JOGL e metto tutto online :)

Vifani
18-09-2005, 01:21
Alloa ragazzi. Ho finito prima del previsto e ho messo tutto online. Troverete in "diamonds/extras/Spikes/Vifani" due esempi di una stessa scena 3D se così si può definire un cubo rosso che ruota su se stesso in uno spazio nero :D. Un esempio è fatto con LWJGL e l'altro con JOGL.

Per avviare i due esempi, se usate il prompt (parlo di Windows), digitate dalla cartelle BIN:


java -Djava.library.path=../bin/ -cp .;../jar/lwjgl.jar LWJGLSample.

Premete ESC per uscire.

o

java -Djava.library.path=../bin/ -cp .;../jar/jogl.jar JOGLSample

Cliccate sulla X della finestra per uscire.


Nelle cartelle jar e bin trovate le librerie (tutto, non solo ciò che è utilizzato nella demo). Io ho avuto tempo solo di provare il tutto sotto Windows, ma ovviamente la cosa funzionerà perfettamente anche sotto gli altri operativi: è necessario solo scaricare la versione Linux e Mac OS di LWJGL e JOGL ed inserire i file relativi in BIN e JAR.


La mia scelta ricade nuovamente su LWJGL per diverse motivazioni. Il discorso di avere già esperienza è un motivo fino ad un certo punto che potrebbe al massimo accelerare un po le fasi iniziali del lavoro, in quanto non devo giocare con l'API per capire come funziona, e che mi consentirebbe di aiutare qualcuno di voi in difficoltà. La realtà tuttavia è che LWJGL, vedendo anche il codice degli esempi, consente una libertà maggiore, non si appoggia ad AWT, ma direttamente al codice nativo del sistema operativo, produce un codice più pulito e più controllato. In LWJGL facendo l'import statico è possibile scrivere codice OpenGL come se si trattasse di un progetto C/C++ (cosa che se non erro in JOGL non si può fare). Inoltre LWJGL ha tutte le chiamate OpenGL suddivise per estensione o versione OpenGL. Ciò significa che per accedere all'estensione EXTFrameBufferObject, per esempio, si esegue l'import di org.lwjgl.opengl.EXTFramebufferObject nella classe e per accedere ad una funzionalità di OpenGL 1.4 si esegue l'import di org.lwjgl.opengl.GL14. Ciò consente di tenere sotto occhio quali funzionalità si stanno utilizzando in ogni classe, un indubbio vantaggio nella gestione della compatibilità con le varie schede video presenti sul mercato (ATI e NVIDIA sono oro, ma aspettate di vedere all'opera il driver OpenGL ICD di Intel e poi sì che ci sarà da divertirsi). Naturalmente c'è anche da considerare che LWJGL supporta anche OpenAL (come JOAL) e DEVIL, una libreria facilissima da usare che consente di gestire immagini (ad esempio possiamo caricare qualsiasi formato di texture, da JPG a BMP a DDS con una sola unica funzione e meno di dieci righe di codice).

Concludo facendo presente che, nonostante non sia supportato ufficialmente da Sun come JOGL, LWJGL è costantemente sviluppato ed è usato con successo dalla Puppygames, un'azienda avviata dal creatore di LWJGL, che realizza giochi Java+OpenGL. Al link (http://www.puppygames.net/) potete trovare le demo dei giochi che sviluppano (Alien Flux è proprio carino) ed è assicurata al 100% la compatibilità con Windows, Linux e Mac OS.

fek
19-09-2005, 10:09
Abbiamo scelto LWGL. I jar e le librerie sono nel repository.

DanieleC88
19-09-2005, 15:29
Abbiamo scelto LWGL. I jar e le librerie sono nel repository.
Devo correggerti: LWJGL! :Prrr:
Perfetto allora. Quindi, ricapitoliamo: LWJGL+DEVIL per la parte grafica, il sonoro invece sarà gestito da JAOL? Così possiamo passare subito ad imparare le API.

Gica78R
19-09-2005, 16:21
Ciao...

Su quale meteriale state studiando la LWJGL? Avete qualcosa di meglio di quella che c'e' sul sito ufficiale: http://www.lwjgl.org/javadoc/
Non dico come contenuti (che non ho ancora letto :p ), ma come formato: magari pdf. Sarebbe piu' semplice e veloce da utilizzare rispetto alla documentazione in HTML :O

Inoltre, credete sia il caso di aprire un bel thread con tutti i link alla documentazione necessaria (LWJGL, JOAL, Junit, ecc. ecc.)?

Grazie

fek
19-09-2005, 16:31
Inoltre, credete sia il caso di aprire un bel thread con tutti i link alla documentazione necessaria (LWJGL, JOAL, Junit, ecc. ecc.)?

Grazie

Decisamente si'. Fai pure :)

cisc
19-09-2005, 17:36
scusate un attimo, il sonoro se lo gestisce direttamente LWJGL, quindi non c'è bisogno di JOAL;)

Vifani
19-09-2005, 17:44
Uno dei motivi della scelta di LWJGL è anche la sua completezza: OpenGL, OpenAL e DEVIL sono tutti binding al suo interno.

Riguardo la documentazione, ti assicuro che il javadoc (che puoi scaricarti dalla sezione Downloads in locale) è tutto quello di cui hai bisogno per conoscere l'API e tutto ciò che puoi usare di essa. Se hai bisogno di esempi, puoi trovarli in http://www.lwjgl.org/demos.php , completi di codice sorgente o anche in http://wiki.lwjgl.org/

Inoltre per l'audio ci sono degli appositi tutorial: http://www.lwjgl.org/documentation_openal_01.php