PDA

Visualizza la versione completa : OpenGL vs Direct3D?


hiphop-master
24-08-2013, 17:31
Salve a tutti.
Sono molto pratico di C, ho una buona conoscenza dell'uso delle classi, e da un bel po' di tempo programmo con le Win32 API.
Queste ultime, però, non permettono il rendering o l'accelerazione hardware, quindi ho deciso di cominciare a studiare qualche Framework che permette ciò.
I due framework che mi sono sembrati più adatti sono le Direct3D (versione 9, successivamente la 11), e le OpenGL.
Se è vero che le OpenGL sono multipiattaforma, è anche vero che le Direct3D sono più utilizzate e (a quanto si dice in giro) più performanti.
Quindi, cosa scegliere? Quali sono le più facili e/o convenienti da usare?
Grazie mille in anticipo :)

Scara95
24-08-2013, 21:12
Ma poi cosa pensi di farci? Ti interessa solo creare un'interfaccia grafica normale con i soliti componenti (es. bottone, campi di testo...)

XWolverineX
25-08-2013, 19:27
Per fare interfacce grafice accelerate, buttati su WPF senza pensarci nemmeno.

hiphop-master
27-08-2013, 15:54
Originariamente inviato da Scara95
Ma poi cosa pensi di farci? Ti interessa solo creare un'interfaccia grafica normale con i soliti componenti (es. bottone, campi di testo...)

La mia intenzione era creare dei giochini... li avevo realizzati pure in Win32 API, ma, ovviamente, andavano a scatti per la mancanza dell'accelerazione hw


Originariamente inviato da XWolverineX
buttati su WPF

A quanto ne so WPF si appoggia su Direct3D, perché dovrei preferirle a quest'ultime?

MItaly
27-08-2013, 19:20
Originariamente inviato da hiphop-master
La mia intenzione era creare dei giochini... li avevo realizzati pure in Win32 API, ma, ovviamente, andavano a scatti per la mancanza dell'accelerazione hw
In realtà non vuol dire... per giochini 2D si possono fare cose che non vanno a scatti anche senza accelerazione hardware; anche adesso con le Qt sto lavorando con roba che si muove in una QGraphicView, e anche senza abilitare OpenGL (quindi tutto in rendering software senza alcuna accelerazione) le animazioni sono perfettamente fluide.

A quanto ne so WPF si appoggia su Direct3D, perché dovrei preferirle a quest'ultime?
Sono due cose diverse.
Direct3D ti consente di disegnare/animare/... quel che ti pare, ma si occupa solo di "primitivi grafici"; WPF, invece, fornisce controlli standard (textbox, pulsanti, ...) disegnati tramite DirectX. Ovvero, se lavori direttamente con DirectX tutte queste cose te le devi reinventare da capo, WPF te le fornisce già pronte.

Tra parentesi, in alternativa a WPF c'è sempre QtQuick, multipiattaforma, basato sulle librerie Qt e con accelerazione hardware OpenGL.

mamo139
28-08-2013, 11:18
Originariamente inviato da MItaly
Tra parentesi, in alternativa a WPF c'è sempre QtQuick, multipiattaforma, basato sulle librerie Qt e con accelerazione hardware OpenGL.

Questo interessa molto anche a me...

sto creando un gioco con le OpenGL (sto cercando di utilizzare solo OpenGL 2.1 e GLSL 120 per ora, ma se c'e' molta convenienza a saltare alle versioni successive non mi faccio problemi), dici che posso usare queste librerie per costruirci sopra una GUI decente e performante?

Perche' fare tutta la gui partendo dalle primitive e' appunto davvero noioso. :stordita:

hiphop-master
28-08-2013, 15:47
Originariamente inviato da MItaly
per giochini 2D si possono fare cose che non vanno a scatti anche senza accelerazione hardware
Verissimo, infatti avevo programmato un giochino simil-Space Invaders con le Win32 API, ma il problema si è presentato quando ho deciso di programmare un giochino con lo scrolling del background (alla Super Mario, per intenderci). Lo sfondo è risultato troppo "pesante" per essere renderizzato soltanto con il lato software.

Originariamente inviato da MItaly
c'è sempre QtQuick, multipiattaforma, basato sulle librerie Qt e con accelerazione hardware OpenGL.
Esistono manuali per lavorare con questo Framework? Come avviene l'integrazione delle OpenGL?

mamo139
28-08-2013, 16:03
Per aggiungere un po di carne al fuoco, ho trovato questa CEGUI http://www.cegui.org.uk, che dovrebbe essere pensata apposta per creare GUI per videogiochi. Funziona sia con OpenGL che con Directx.

Io da poco ho iniziato a programmare con le OpenGL con l'obiettivo di creare un gioco. Le ho preferite alle Directx perche' sono multi-piattaforma e la documentazione mi pare buona. Inoltre leggendo qua e la ho trovato pareri contrastanti circa il fatto che performino meglio o peggio delle DirectX. :bhò:

hiphop-master
28-08-2013, 16:09
Originariamente inviato da mamo139 leggendo qua e la ho trovato pareri contrastanti circa il fatto che performino meglio o peggio delle DirectX. :bhò:
Anch'io ho trovato alcuni pareri contrastanti (anche se la maggior parte vota per DirectX più performante): mi chiedo allora perché quasi tutte le case produttrici di giochi preferiscano le DirectX alle OpenGL :confused:

MItaly
28-08-2013, 16:17
Originariamente inviato da mamo139
sto creando un gioco con le OpenGL (sto cercando di utilizzare solo OpenGL 2.1 e GLSL 120 per ora, ma se c'e' molta convenienza a saltare alle versioni successive non mi faccio problemi), dici che posso usare queste librerie per costruirci sopra una GUI decente e performante?
Onestamente non ci ho mai lavorato, per quello che sto facendo adesso ho preferito usare i QtWidgets "classici" (non accelerati ma molto più matura come libreria); da quello che leggo dovrebbe essere abbondantemente possibile, oltre alle funzionalità grafiche già fornite di suo da QtQuick e dalle librerie Qt3D puoi sempre creare un oggetto custom in cui puoi poi disegnare come ti pare con OpenGL. La cosa divertente è che, facendo le cose a modino, dalle Qt 5.1 puoi compilare il tuo programma anche per Android, e dalle 5.2 (che dovrebbero uscire prima della fine dell'anno) probabilmente anche per iOS.
In ogni caso, puoi vedere delle guide introduttive a QtQuick 2 qui (http://qt-project.org/wiki/Developer-Guides) (occhio che non hanno ancora sistemato i link, al posto di releases.qt-project.org devi mettere download.qt-project.org).

Loading