Come ho accennato nella prima lezione, le librerie DirectX sono
una serie di strati software che permettono laccesso allhardware
più disparato. Lutilità delle librerie è di presentare al
programmatore un modello uniforme su cui lavorare: voi sapete
che con le DirectX alcune cose le potete fare sempre. Sicuramente.
Qualunque cosa ci sia dentro il case. Altre cose invece sono esplicitamente
dipendenti, e prima di azzardarvi ad usarle dovete chiamare le funzioni
DirectX
apposite per scoprire se è possibile oppure no. Se alcune funzioni
mancano nellhardware, le DirectX possono sopperire con un
emulazione software (molto più lenta), oppure rinunciare del tutto.
I meccanismi possono essere a volte piuttosto complicati.
In particolare, il modello di programmazione in 3D è estremamente
sofisticato. Non aspettatevi di poter capire tutto in qualche serata
davanti al PC, perché cè parecchia roba da digerire.
Al livello più alto si trova loggetto Direct3D. Potete
pensare a questo oggetto come ad una specie di deità minore, al
quale chiedete favori e miracoli. Più seriamente, loggetto
Direct3D governa le funzioni di livello più alto: ad esempio, è
a lui che chiedete come è fatto lo schermo su cui andrete a disegnare.
Attraverso loggetto Direct3D viene creato quello che si chiama
il Direct3Ddevice. Il D3Ddevice fa la maggior parte del lavoro:
disegna, muove, sposta, pulisce, tiene traccia degli oggetti presenti
sullo schermo.
Gli oggetti da disegnare vengono espressi sotto forma di vertici.
Il vertice è il mattone con cui tutto il mondo virtuale viene
costruito. I vertici vengono riuniti in triangoli: tutti i poligoni
più complicati vengono spezzati in triangoli, e le superfici curve
vengono approssimate con strisce di triangoli. Il motivo è che è
molto facile calcolare posizione, orientamento eccetera di un triangolo
che di un poligono con un maggiore numero di vertici. Per una scheda
grafica, disegnare un quadrato è più difficile che disegnare due
triangoli uniti (che alla fine formano lo stesso quadrato).
Ogni vertice viene trasformato in modo indipendente: la
trasformazione comprende varie rotazioni e traslazioni per riportarlo
nel punto di vista giusto, la proiezione prospettica, il controllo
di visibilità e di profondità, lilluminazione da parte di
una o più sorgenti, lapplicazione di una o più texture (fino
ad 8), e finalmente il disegno sullo schermo. Forse non ho azzeccato
lordine (però sono sicuro che il disegno sullo schermo sta
per ultimo...), ma credo di avere reso lidea.
Tutti i pixel che vanno a formare il triangolo vengono trattati
allo stesso modo, sfruttando le informazioni di colore, posizione,
illuminazione e texture dei vertici.
Oltre a tutto questo, la versione 8 di DirectX introduce
i concetti di vertex shader e pixel shader, ossia
di mini-programmi in linguaggio assembler che trattano i vertici
lasciando totale libertà al programmatore. Per adesso li eviterò
accuratamente, anche perché non esiste alcuna scheda grafica in
commercio in grado di sfruttarli: la prima sarà la nVidia GeForce3.
Ognuno dei passi precedenti richiede linee di programma, calcoli
e sudore della fronte. Non spaventatevi però :-) E possibile
iniziare a piccoli passi, introducendo un argomento alla volta e
lasciando il resto impostato su default, per così dire,
in modo da iniziare a vedere qualcosa fin da (quasi) subito.
Le prossime lezioni saranno dedicate alla costruzione di un codice
sorgente che potremo utilizzare come base per i nostri esperimenti.
Inoltre, farò pesantemente uso delle funzioni già pronte
che sono comprese nellSDK. Se guardate da vicino, noterete
che le prossime lezioni saranno molto simili ai tutorial
forniti proprio lì. E non è un caso :-)
Torna all'indice Generale del corso di Corso di DirectX di Software Planet