# DirectX

DirectX
Copertina Tutti i moduli · Sviluppo
    CopertinaDirectX/Copertina
* Ripasso di matematicaDirectX/Ripasso di matematica
** Calcolo vettorialeDirectX/Calcolo vettoriale
** Calcolo matricialeDirectX/Calcolo matriciale
** TrasformazioniDirectX/Trasformazioni
* Creare il progetto con VS2010DirectX/Creare il progetto con VS2010
* InizializzazioneDirectX/Inizializzazione
** Win32
*** Creare la finestraDirectX/Creare la finestra
*** Terminale di debugDirectX/Terminale di debug
*** Message loopDirectX/Message loop
*** Altre funzioni Win32DirectX/Altre funzioni Win32
Modifica il sommario
DirectX è una libreria di funzioni messa a disposizione dei programmatori per i sistemi Windows. La libreria è famosa soprattutto per l'utilizzo che trova nella grafica dei videogiochi. In realtà DirectX non serve solo a "disegnare" in 3D, ma è composto di vari moduli che trattano diversi aspetti dell'hardware:
* Direct3D (D3D): è la libreria che ci permette di disegnare oggetti 3D.
* Direct3DX (D3DX): è un supporto a Direct3D. Rende più semplici operazioni che andrebbero fatte con Direct3D, ma che richiederebbero molto più lavoro. Internamente esegue chiamate a Direct3D. Comprende anche un set di strumenti matematici già pronti.
* DirectX Graphics Infrastructure (DXGI): viene utilizzata per ottenere elenchi di schede video nel PC, schermi, risoluzioni supportate dallo schermo.
* Direct2D (D2D): nuova libreria per i disegni in due dimensioni che sfruttano l'accelerazione hardware delle schede video. Utilizzata nei più recenti browser (Firefox 4.0+, Internet Explorer 9.0+, Google Chrome) per disegnare la pagina molto rapidamente.
* DirectSound: per lavorare con file MP3, WAV, ed emettere suoni.
* DirectPlay: utilizzata per la rete. Permette lo sviluppo di giochi multiplayer.
In questo libro ci concentreremo particolarmente su D3D e D3DX, quindi sulla realizzazione di grafica tridimensionale. In particolare si discuterà della versione 10, in quanto questa porta delle novità enormi rispetto alla precedente. In futuro sono previsti articoli sulla nuova versione 11, che aggiunge poco alla versione 10 (per chi fosse interessato alle novità: Tessellation e GPGPU).

## Motivazione

DirectX non è una libreria semplice da usare. Ha centinaia di funzioni e anche per cose elementari richede notevoli sforzi. Purtroppo nessun libro, tutorial, guida, video e riuscito a semplificare la trattazione di un argomento così vasto. Qui raccoglierò le mie conoscenze al riguardo, cercando di essere il più completo possibile ed al tempo stesso il più comprensibile possibile, nella speranza che possa diventare un punto di riferimento per chi è alle prime armi con il mondo del Rendering 3D.

## Attenzione

Il codice che troverete in queste pagine potrebbe contenere errori essendo molto vasto. Nel caso li trovaste vi prego di correggerli, o di segnalarli nella discussione della pagina.

## Prerequisiti

* Come potrete ben immaginare, DirectX è supportato solo su Windows. In particolare la versione 10 necessita di Windows Vista o superiore. Se voleste utilizzare a pieno la versione 11, dovreste limitarvi a Windows 7.
* Una ottima conoscenza del linguaggio C++. DirectX è usabile anche in ambiente .Net (C#, VB), ma per quanto ottimi linguaggi, il C++ è quello che da i risultati migliori in termini di prestazioni quando si lavora con la Computer Graphics. Nel caso in cui aveste deciso di usare il C#, potrete trovare qualche articolo sul Web. Inoltre è nato nel 2006 XNA, una libreria basata a sua volta su DirectX, fatta per essere usata nei linguaggi .Net, che rende la vita molto facile. Ma le prestazioni ovviamente non sono le stesse.
* Le DirectX possono essere usate con qualsiasi IDE (Dev-C++, Visual Studio) se configurate in modo corretto. Per questo libro userò Visual Studio 2010, in quanto offre il miglior supporto per il debugging. Quindi consiglio caldamente di installare almeno Visual C++ Express Edition, dato che le istruzioni seguiranno questa IDE.
* Una buona mente matematica, e fondamenti di trigonometria (sin, cos, tan).
* Le librerie di Run-Time, ossia le DLL. Assicuratevi di avere sempre l'ultima versione. Questo pacchetto deve essere installato su qualsiasi computer su cui volete far girare la vostra applicazione. Come quando installando un gioco vi chiedono di aggiornare le DirectX. Le ultime le trovate qui: DirectX End-User Runtimes (June 2010) (~100 MB)
* Infine questo bisonte che è la DirectX SDK. Questo pacchetto contiene le librerie, i file header, utility, esempi e documentazione. La versione di June 2010 (l'ultima versione ad oggi - 07/10/2011) la trovate qui: DirectX Software Development Kit (~570 MB)

## Libri correlati

* C
* C++