PDA

View Full Version : programmare in direct3d o opengl?


giova22
30-01-2006, 09:37
Ciao

Ho una dicreta conoscenza di C e JAVA, e un po di ASSEMBLER (il mio preferito).

Ho sempre creato programmini che funzionano in windows, del tipo rubriche telefoniche, piccole utility ecc.

Ora vorrei avvicinarmi alla grafica 3d. Ma da dove posso cominciare? Innanzituttto sulla scelta OpenGL o Direct3d. Ho letto che quest' ultime sono più facili da usare, ma non essendo open non vorrei che per ogni programmino dovessi pagare qualcosa........

Inoltre sapete dove trovare (possiiblmente in internet) un po di tutorial, guide o libri?

Ciao e grazie

shinya
30-01-2006, 10:01
Ci sono vantaggi e svantaggi per entrambe.

Directx è un prodotto microsoft, e cambiano alla velocità della luce; questo significa continuo aggiornamento, codice da riscrivere (o da buttare), e tutto quanto sia correlato al non avere uno standard fisso. Opengl cambia molto più lentamente, ed è lo standard industriale per quanto riguarda la grafica 3d (applicazioni tipo maya utilizzano opengl). Directx è più orientata allo sviluppo di giochi, dove la manutenzione del codice praticamente non esiste. Dalla sua Directx ha la pregevole caratteristica di avere tutto dentro di sè: video, audio, input, ecc... Con l'ultimo sdk poi è stata aggiunta una libreria figa chiamata DXUT (che penso stia per directx utility toolkit) che ti facilita di molto l'inizializzazione delle librerie e ti dà la possibilità di aggiungere widget grafici in modo direi quasi banale. Questo non è un vantaggio da poco secondo me.
Opengl è molto più rozza: il suo scopo è la grafica, punto. Niente audio, niente input, niente caricamento delle texture (una texture è un insieme di byte, e opengl capisce quelli, non i file .jpg, .tga, ecc...). Per queste cose ti devi appoggiare a librerie esterne (come devIL per le texture, fmod per l'audio, ecc...queste sono scelte religiose).

Personalmente io utilizzo opengl: è più pulita, più diretta, genera codice MOLTO più pulito e leggibile, e l'utilizzo di librerie esterne non mi pesa troppo.

Mi sarò dimenticato sicuramente qualcosa, ma per ora direi che può bastare :)
Ah, ovviamente con directx puoi sviluppare solo per windows, ma questo penso sia chiaro :)

Il modo migliore di scegliere comunque è provare entrambe.

ps. non devi pagare nulla per sviluppare applicazioni con directx: ti scarichi l'sdk e bon.

ps2. ah...sai qualcosina di matrici e vettori, vero??

_Xel_^^
30-01-2006, 13:42
Io usavo OpenGL, ci ho fatto pure un piccolo engine 3D per la mia tesi, quando però ho voluto curiosare tra shader e altre cose più evolute di semplici oggetti texturati :D sinceramente in OpenGL era una bella mazzata...

Così ho installato l'SDK delle DX9, settato il Visual Studio e via... ho ampliato i miei orizzonti :D
E' stata un emozione arrivare a creare il mio primo pixel shader capendo benissimo quello che stavo facendo talmente era semplice (beh almeno all'inizio :p ) :oink:
Ovvio tutta roba dilettantistica :p , però in pochissimo tempo ho applicato tutto quanto imparato precedentemente con le OpenGL andando poi oltre con roba più avanzata... ad averlo saputo prima che erano così "produttive" le DX :cry: :muro: :(

Qualche link che mi è stato utile:

Questo è un forum molto caruccio :) (dopo che hanno chiuso flipcode ho trovato questo :cry: )
http://www.gamedev.net/community/forums/

FAQ - TUTORIAL (i primi che ho pescato nei meandri dei miei bookmarks!)
http://www.codesampler.com/dx9src.htm
http://www.toymaker.info/Games/html/direct3d_faq.html


Un'ultima cosa... come già detto spero tu sappia QUALCOSA su matrici e vettori altrimenti... (l'unico motivo che ho per ringraziare ingegneria :asd: )


Ciau!

giova22
31-01-2006, 08:14
ciao.

Grazie a entrambi delle risposte.

LE matrici e i vettori li ho studiati all università. DEvo sapere le nozioni di geometria, oppure come si programmano? Perchè le matrici le ho usate in java come array a 2 domensioni. Basta quello?

_Xel_^^
31-01-2006, 08:53
ciao.

Grazie a entrambi delle risposte.

LE matrici e i vettori li ho studiati all università. DEvo sapere le nozioni di geometria, oppure come si programmano? Perchè le matrici le ho usate in java come array a 2 domensioni. Basta quello?

No intendevamo matrici e vettori in senso geometrico :D
Operazioni con matrici, operazioni tra vettori tipo prodotto scalare, prodotto vettoriale e tutta roba relativa a normali, trasformazioni, spazi vari ecc ecc...
In giro trovi tutte le spiegazioni che vuoi ma devi avere voglia di studiarle un po' :D
Per iniziare puoi anche fare qualcosina senza sapere quasi nulla, ma se ti piace e decidi di dedicarti al 3D non si scappa :D


Ciau! ;)

shinya
31-01-2006, 09:55
No intendevamo matrici e vettori in senso geometrico :D
Operazioni con matrici, operazioni tra vettori tipo prodotto scalare, prodotto vettoriale e tutta roba relativa a normali, trasformazioni, spazi vari ecc ecc...
In giro trovi tutte le spiegazioni che vuoi ma devi avere voglia di studiarle un po' :D

E' consigliato anche un full-immersion di calcolo numerico. Trovi un libro online con del codice in C; cerca "numerical recipes in c" su google.

Buon lavoro! :)

k0nt3
31-01-2006, 10:37
posso consigliarti http://nehe.gamedev.net/ ? alcune volte tratta gli argomenti in maniera vecchia e superata, ma in quanto a didattica a me è stato molto utile! innumerevoli le cose che ho imparato :D! ottimi i tutorials per capire!

ps. OpenGL rulez

shinya
31-01-2006, 17:47
ps. OpenGL rulez

Ma insomma...sul fatto che "it rules" ho qualcosa da ridire.
Sarebbe 100 mila volte meglio avere a disposizione un framework di più alto livello tipo directx, ma portabile, standard e con una sintassi leggibile da un essere umano.
Nel 2006 a nessuno interessa avere una libreria grafica di basso livello, la cui unica innovazione rispetto a 20 anni fa è stata cambiare il nome alle funzioni da glNomeFunzioneARB a glNomeFunzione.
In questo senso OpenGL sta perdendo terreno imho.

k0nt3
31-01-2006, 18:17
Ma insomma...sul fatto che "it rules" ho qualcosa da ridire.
Sarebbe 100 mila volte meglio avere a disposizione un framework di più alto livello tipo directx, ma portabile, standard e con una sintassi leggibile da un essere umano.
Nel 2006 a nessuno interessa avere una libreria grafica di basso livello, la cui unica innovazione rispetto a 20 anni fa è stata cambiare il nome alle funzioni da glNomeFunzioneARB a glNomeFunzione.
In questo senso OpenGL sta perdendo terreno imho.
ci sono un casino di framework di più alto livello costruiti sopra opengl se non vuoi perdere tempo. il basso livello può sempre fare comodo ogni tanto comunque! a livello didattico io lo preferirei a d3d..
comunque hai ragione sul fatto che ha perso terreno! tutto da quando gli investimenti grossi si sono spostati senza motivo verso d3d :D! era molto più logico costruire qualcosa sopra lo standard esistente no?

ps. è meglio che non inizia la solita battaglia OpenGL vs D3D... hanno pregi e difetti tutti e due, inutile nasconderlo. ma è un'altra questione come DVD- o DVD+.. un solo standard sarebbe meglio :D