Corso di DirectX

Introduzione

 

Cosa significa DirectX

In genere inizio un corso prendendo il nome dello strano oggetto di riferimento e traducendolo in Italiano, per dare un’idea 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 l’accesso all’hardware 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 qualcun’altro 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 l’una chi l’altra.
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 dell’hardware. 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 un’infinità. Anzi, fino a qualche anno fa le DirectX erano viste come poco più di un giocattolo, lento e farraginoso, guardato dall’alto 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 un’altra non è affatto difficile. D’ora 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