Tempo di Lettura: 2 minuti
Il merito dell’evoluzione multimediale dei nostri computer si deve in gran parte ai videogiochi divenuti ormai così realistici da richiedere un’enorme potenza di calcolo. Infatti, ad affiancare il processore sono arrivate le schede video accelerate in grado di elaborare in modo autonomo un mondo virtuale a 3 dimensioni. Molti di voi ricorderanno sicuramente le schede grafiche di 3DFX, uscite una decina di anni fa e chiamate Voodoo: il primo grande passo verso una grafica che a quei tempi era definita “realistica“. Queste schede, ad ogni nuova release, divenivano sempre più potenti in quanto erano equipaggiate con un numero sempre maggiore di funzioni grafiche.
Per evitare ai programmatori di riscrivere un programma per ogni nuovo processore grafico, 3DFX creò la libreria Glide, che consentiva di ottenere un codice indipendente dal modello di scheda utilizzato. Negli stessi anni, anche altre società hanno sviluppato librerie simili (come le OpenGL di Silicon Graphics) allo scopo di fornire ai programmatori uno strumento semplice per creare ambienti multimediali sfruttando le risorse a disposizione.
Ben presto, Microsoft rilasciò le sue librerie grafiche DirectX. Nate per sostituire il sistema grafico di Windows 3.11 e dare accesso ai nuovi chip grafici e audio che si stavano affacciando sul mercato, queste librerie utilizzavano due tipi di driver: HAL (Hardware Abstraction Layer) ed HEL (Hardware Emulation Layer). Grazie ad essi, quando un programmatore utilizzava una funzione grafica non doveva più chiedersi se la scheda su cui avrebbe girato il gioco la supportava, erano le DirectX a deciderlo: se la scheda era compatibile veniva usata la funzione del driver HAL che si interfacciava con il processore grafico, altrimenti la funzione veniva emulata attraverso il driver HEL. Il vantaggio era indiscutibile: acquistando un gioco compatibile con le DirectX che sfruttava una cera caratteristica, non presente sulla nostra scheda video, eravamo sicuri che girava comunque; cambiando la scheda grafica con una compatibile, avremmo potuto godere immediatamente dell’effetto aggiuntivo.
Successivamente le DirectX hanno raggiunto altri ambiti e sono state aggiunte nuove librerie multimediali per la gestione delle schede audio, dell’ambiente Windows e la riproduzione video.
In definitiva, quindi, le librerie grafiche Microsoft sono costituite da diversi componenti che semplificano l’accesso alle funzioni multimediali più importanti:
- Direct3D: viene utilizzato per la gestione degli ambienti grafici 3D e dei vari effetti visivi. Fornisce un’interfaccia di controllo per le funzioni avanzate del processore grafico.
- DirectDraw: viene utilizzato per accelerare la festione delle finestre e delle immagini in ambiente Windows. Nelle DirectX10 è stata sostituita interamente da Direct3D.
- DirectSound: viene utilizzato per fornire un’interfaccia tra le applicazioni e le schede audio e consente di ottenere effetti sonori d’ambiente.
- DirectInput: viene utilizzato per controllare le periferiche di gioco come gamepad o cloche. Non è stata più aggiornata dalla 8.0.
- DirectPlay: viene utilizzato per fornire funzioni semplificate per la realizzazione di giochi multiplayer on-line. Non viene più utilizzata.
- DirectXMedia: viene utilizzato per per garantire la visualizzazione e la protezione di contenuti multimediali quali video, musica ed animazioni Web mediante l’uso di plugin e codec.
A questo punto potreste chiedervi: perché, se le DirectX sono state progettate per eliminare le incompatibilità tra il software e l’hardware, sui giochi si trova, per esempio, la dicitura “Richiede una scheda compatibile DirectX 9.0“. La risposta è semplice: in 10 anni l’hardware è cambiato completamente, siamo passati da processori a 50 MHz a quelli a 2 GHz e le librerie grafiche sono state ulteriormente sviluppate per garantire effetti e prestazioni sempre maggiori.
Con le prime schede GeForce prodotte da nVidia, il processore grafico è diventato per la prima volta una GPU (Graphic Processing Unit) in grado di eseguire codice adattabile ai bisogni del programmatore. La versione 7.0 delle DirectX ha seguito questa evoluzione, rinunciando, però, alla compatibilità con le vecchie versioni. Infatti, i primi giochi che richiedevano una GPU non potevano più girare sulle schede precedenti o dovevano essere eseguiti in una modalità compatibile ma con una visualizzazione grafica nettamente inferiore.
Se da un lato le GPU hanno sollevato le CPU da un’enorme carico di lavoro, dall’altro i programmatori hanno richiesto sistemi grafici sempre più potenti. Si è quindi deciso di separare nettamente i compiti in unità di elaborazione ancora più specializzate chiamate Shader. Le DirectX 8.0 hanno definito 2 tipi di Shader: il Vertex Shader effettua calcoli su poligoni ed oggetti 3D, mentre il Pixel Shader applica effetti effetti di illuminazione e texture per aumentare il realismo della scena.
Ogni processore grafico contiene più shader che lavorano in contemporanea, mentre il loro numero viene ridefinito ad ogni versione della libreria. In poche parole, se un gioco ha tra i requisiti richiesti la compatibilità DirectX 9.0, vuole dire che per funzionare ha bisogno di un certo numero di Shader, in mancanza dei quali non riuscirebbe a rappresentare gli oggetti richiesti.
Accanto al comparto grafico hanno avuto una più modesta, ma interessante, evoluzione anche le schede audio. Siamo infatti passati dal suono stereo a quello surround e a sistemi di casse 7.1 per una totale immersione nell’ambiente sonoro. Le schede audio “accelerate” sono dotate di un processore programmabile che può sostituire in parte la CPU nell’applicazione di effetti o nella conversione di fonti sonore e sono gestite dai programmi in modo trasparente grazie alla libreria DirectSound.
L’ambito di utilizzo delle DirectX non è stato limitato, però, ai soli PC ma si è esteso anche alle console. Questo va, ovviamente, a tutto vantaggio delle software house che possono produrre un gioco e adattarlo velocemente per l’uscita su Xbox e PC senza ricorrere a grossi investimenti. Basti pensare che anche la GPU della Playstation 3 è perfettamente compatibile con le DirectX 9.0c!
Con l’arrivo di Windows Vista i PC finalmente possono fornirci un’interfaccia tridimensionale su più ambienti contemporaneamente, ad esempio un videogioco 3D che gira in una finestra anch’essa 3D. Microsoft ha rivisto completamente la gestione dei driver video e l’interazione delle DirectX, tanto che la versione 10.0 di queste ultime può girare solo su Vista.
Riducendo i tempi di inattività del processore grafico, che resta spesso in attesa che la CPU trasferisca i dati alle librerie grafiche, le DirectX sono in grado di rappresentare un maggior numero di oggetti tridimensionali. Una delle novità più importanti delle DirectX 10 è l’integrazione di una nuova unità, chiamata Geometry Shaker, che può eseguire modifiche alla scena senza interrogare il sistema centrale e stabilire dinamicamente quali oggetti sono nascosti e possono essere scartati. Grazie a questi accorgimenti le schede video vengono sfruttate a fondo riducendo al minimo lo spreco di risorse.
Aero Glass, l’interfaccia del nuovo sistema operativo, utilizza esclusivamente la libreria DirectX 9.0L (le DirectX 9.0L sono una versione più veloce delle DirectX 9.0c per XP e gireranno solo sotto Vista). Permetteranno ai giochi attuali di lavorare con il nuovo driver model di Vista) e richiede persino una scheda video con Pixel Shader 2.0 per realizzare gli effetti di trasparenza e l’effetto Flip3D per la scelta della finestra attiva.
Il futuro riserverà un ruolo sempre più centrale ai processori grafici: presto avremo schede video con più di 20 shader che elaboreranno la maggior parte del lavoro, dalla trasformazione di oggetti 3D fino alla gestione della fisica nel mondo virtuale.
L’evoluzione ha ripreso il suo cammino, non resta che seguirla e goderne i frutti.
[via Win Magazine Giugno 2007]
Pingback: Levysoft » DirectX 10: le restrinzioni su Vista fanno vendere meno videogiochi. Ma c’è anche chi tenta, legalmente e non, di farle funzionare anche su Windows XP 3 Settembre 2007
[…] Ma quali sono le novità delle DirectX 10 rispetto alla versione 9.0c che è l’ultima disponibile per il sistema operativo Windows XP? Le DirectX 10, originariamente denominate Windows Graphics Foundation, non sono solo una versione aggiornata delle vecchie 9.0c, ma integrano nuove funzioni come lo Scheduler, che perfeziona il multitasking grazie anche all’utilizzo di un nuovo sistema di virtualizzazione della memoria. La novità più importante, però, è che tramite le DirectX 10 la GPU potrà svolgere un lavoro notevolmente superiore rispetto al passato lasciando quindi di molto più libera la CPU che potrà occuparsi di altro. Tuttavia il passaggio da DX 9 a DX 10 non sarà significativo quanto, come raccontato precedentemente, il passaggio da DX 7 a DX 8, consentirà però un numero più elevato di effetti, contribuendo ad aumentare la profondità e il dettaglio dei paesaggi, importante passo per il raggiungimento del fotorealismo. Per maggiore informazioni potete leggere un mio precedente post: Tutta la storia delle librerie grafiche DirectX. […]