OpenGL Vs DirectX

Sono molteplici le discussioni che hanno per oggetto le differenze tra OpenGL e DirectX e che spesso degenerano in flames. In realtà le prestazioni e le feature disponibili sono simili come pure la Rendering Pipeline di base. Le differenze si fanno più acute sotto altri aspetti.

Innanzitutto DirectX è una libreria che gira solamente sul sistema operativo Windows e sulla console di casa Microsoft XBox. Al contrario OpenGL è gestita dall'ARB (Architecture Review Board) e si tratta di una libreria multipiattaforma. Ne consegue che le procedure di aggiornamento e di sviluppo della libreria stessa sono molto diverse. Questo spiega come le DirectX siano attualmente alla versione 9.0 e vengano regolarmente aggiornate mentre l'attuale standard OpenGL è giunto solamente alla versione 1.5 e le nuove features sono introdotte in modo apparentemente caotico.

Una differenza fondamentale quando si parla di DirectX e OpenGL riguarda le aree di responsabilità. Infatti sarebbe formalmente più corretto parlare di DirectX Graphics e ancora meglio di DirectDraw e Direct3D.
DirectX non è solamente una libreria grafica ma è un tool di sviluppo completo per la realizzazione di applicazioni multimediali e si estende a diversi campi, esso comprende:
DirectDraw - Libreria per la grafica 2D
Direct3D - Libreria per la grafica 3D
DirectSound - Libreria per la riproduzione e la manipolazione di effetti sonori
DirectInput- Libreria per la gestione dell'Input (tastiera, mouse, joystick etc.)
DirectShow - Libreria per la riproduzione di file video
DirectPlay - Libreria per il networking

DirectX è stata creata per favorire lo sviluppo di videogiochi e altre applicazioni simili su piattaforma Windows. Tali applicazioni infatti necessitano di molte risorse e devono essere in grado di sfruttare a fondo il potenziale dell'hardware. In ambiente DOS questo era possibile grazie alla possibilità di comunicare direttamente con le periferiche, a partire da Windows 95 data l'architettura complessa progettata per i programmi convenzionali il sistema operativo fornisce una interfaccia troppo lenta e macchinosa per raggiungere risultati apprezzabili in campo multimediale.
DirectX permette di accellerare l'accesso all'hardware ed evitare i comuni canali di comunicazione di Windows in modo da incrementare sensibilmente le performance. Non solo, DirectX riveste due ruoli, quello di driver veloce e di API. Non è possibile dividere queste due funzioni.
Ciò significa che un programma che sfrutta OpenGL non può appoggiarsi a DirectX per avere una via preferenziale verso la scheda video, infatti tale via è utilizzabile solamente se il canale viene aperto dalle API Direct3D (o DirectDraw) e se vengono utilizzate le routine grafiche proprie di tali API.
Quando si utilizza OpenGL il compito di aggirare le normali procedure di Windows è affidato alle GL Extension del sistema operativo (WGL).
Il secondo obiettivo di DirectX è quello di fornire una interfaccia di programmazione standard indipendente dalla reale capacita' della periferica. Grazie all'architettura HAL/HEL (Hardware Abstraction Layer e Hardware Emulation Layer) DirectX, dopo aver individuato le capacità dell'hardware, durante l'esecuzione dell'applicazione è in grado di sfruttare la scheda se una determinata feature è supportata, in caso contrario la feature in questione verrà emulata via software. L'applicazione perderà in prestazioni ma continuerà a girare. Inoltre questo facilita lo sviluppo del software dato che durante la fase di progettazione non è necessario trattare le  problematiche relative all'aggiramento di eventuali lacune sulla macchina dell'utente finale.
E' necessario dire che, al pari di OpenGL, determinate funzioni delle API DirectX vengono ora supportate direttamente sulla scheda o dai relativi driver.

Infine DirectX, a differenza di OpenGL, sembra più difficile da capire e da sfruttare, almeno inizialmente. Si tratta naturalmente di una considerazione puramente soggettiva anche se è dovuta in parte al diverso tipo di interfaccia, chiamate di funzione in OpenGL e tecnologia COM per DirectX.

Il consiglio è di non escludere a priori una delle librerie e in base ai propri obiettivi e gusti personali scegliere quella da approfondire. Spesso, inoltre, diversi videogiochi di successo utilizzano OpenGL come libreria grafica ma affidano a DirectX altri compiti importanti come la gestione dell'input e degli effetti sonori.

Privacy Policy