Cosa significa DirectX
In genere inizio un corso prendendo il nome dello strano oggetto
di riferimento e traducendolo in Italiano, per dare unidea
di cosa significa. A volte è difficile, e occorre fare una traduzione
molto libera. Stavolta proprio non ci sono riuscito, DirectX
è solo una combinazione di lettere uscita fuori da un reparto marketing
piuttosto abile.
Si parla in genere di librerie DirectX. Infatti, le
DirectX sono una serie di librerie sviluppate dalla Microsoft con
lo scopo di standardizzare laccesso allhardware e di
rendere più semplice la vita ai programmatori. Queste librerie sono
rivolte soprattutto a programmatori di videogiochi, grafica e multimedia
in genere, parole che vanno di moda e che trascinano le DirectX
con esse.
Perché usare una libreria fatta da qualcunaltro per i propri
programmi? Calatevi nei panni di un qualche programmatore che sta
realizzando la prossima versione di Quake. Sapete che i vostro utenti
hanno quasi tutti una scheda video GeForce, di quelle pompate, e
decidete perciò di scrivere un bel po di routines specializzate
per questa scheda. Il vostro gioco viaggia che è una meraviglia,
e i compratori sono contenti.
Sei mesi dopo, arriva sul mercato il successore del GeForce con
altre 200 funzioni, e compare anche un agguerrito concorrente X,
con una scheda video diversa che ha altre 200 funzioni diverse.
Per non parlare di Y e Z, che mettono sul piatto schedoni video
da paura. I vostri ex-utenti comprano chi luna chi laltra.
I vostri programmi scritti sei mesi prima non servono più a nulla,
perché ogni scheda è diversa dalle altre e va programmata di conseguenza.
E adesso vi tocca riscrivere il motore 3D del vostro videogioco
per ogni scheda video sul mercato, finendo probabilmente in manicomio
a metà del processo.
Una torta a strati
Le librerie DirectX nascono proprio per risolvere questi problemi:
invece di adattare il vostro programma ogni volta ad un hardware
diverso, lo scriverete una volta per tutte usando le funzioni DirectX,
che userete come scatole nere. Ci saranno funzioni come ApriSchermo()
e DisegnaPoligono() per fare il lavoro grafico, e altre funzioni
per suoni, input da tastiera, eccetera. La Microsoft fa una parte
del lavoro, scrivendo varie funzioni sempre più a basso livello,
e alla fine subentra il driver della scheda video, scritto direttamente
dal produtture. Questo driver è l'unico che sa "dialogare"
veramente con i chip presenti sulle schede.
Come vedete, è un sistema abbastanza complicato. Per fortuna ce
ne frega ben poco, perché noi resteremo sempre al di sopra
di tutti questi strati software. Però è importante tenere presente
tutti questi fattori, perché il buon funzionamento e le prestazioni
dei nostri programmi dipenderanno da tre elementi: il nostro codice,
il codice della MS e quello del produttore dellhardware. E,
purtroppo, possiamo solo controllare la qualità del primo.
Bisogna inoltre sottolineare che le DirectX non sono le uniche
librerie di questo tipo. A dire il vero, ne esistono uninfinità.
Anzi, fino a qualche anno fa le DirectX erano viste come poco più
di un giocattolo, lento e farraginoso, guardato dallalto in
basso da mostri sacri come Silicon Graphics che si teneva le sue
librerie OpenGL. Ma con le ultime versioni le DirectX sono molto
migliorate, e la macchina commerciale Microsoft ha comunque un potere
grandissimo sul mercato dei PC. Le altre librerie, prima fra tutte
OpenGL, non sono affatto morte (ad esempio, il motore 3D di Quake
è scritto con esse). Hanno dalla loro alcuni vantaggi, come il poter
funzionare su macchine e sistemi operativi diversi, mentre le DirectX
sono e saranno sempre limitate a quello che la MS decide di fare.
Ma, come si dice, occorre adeguarsi agli standard di mercato.
E noi ci adeguiamo. Tenendo presente che, una volta imparata una
libreria grafica, usarne unaltra non è affatto difficile.
Dora in poi parlerò solo e soltanto di DirectX, ma i miei
discorsi si potranno applicare con pochi cambiamenti anche alle
altre librerie. Per il codice, beh, la traduzione è affidata alla
vostra abilità :-)
Torna all'indice Generale del corso di Corso di DirectX di Software Planet