WGF 1.0, 2.0, DirectX 9.0, Directx 9.L, DirectX Next, DirectX 10… aiuto!
Il titolo enorme di questo post non ha come obiettivo aumentare il rank di devleap.com su google :-) ma cercare di fare luce su tutte le tecnologie legate a DirectX sul nuovo Windows Vista.
Come sapete l’ultima versione attuale di DirectX per Windows XP/2003 è la versione 9.0c, su Windows Vista troveremo la stesso componente chiamato Direct3D9, l’obiettivo è ovviamente mantenere la compatibilità con la stragrande maggioranza di applicazioni multimediali (videogame) al momento dell’uscita di Vista.
Abbiamo detto dal 1936 :-) che WPF a basso livello realizza le sue “magie” tramite DirectX, ma il nuovo vero attore che è alla base di Avalon su Vista è il nuovo WGF 1.0 (Windows Graphics Foundation), in sostanza è una versione avanzata di Direct3D9, per gli amici DX9.L (per chi avesse dormito negli ultimi 3 anni L = Longhorn :-)).
In Vista troviamo inoltre un nuovissimo DWM (Desktop Windows Manager), responsabile di tutti i giochetti di trasparenza/3D/transition con le finestre che abbiamo visto in così tante demo dal 2003, ha pieno supporto per schermi ad alti dpi componendo in tal caso le finestre tramite zoom e funzionalità di video playback incorporato.
I suddetti signori, WPF e DWM si appoggiano entrambi NON a Direct3D9 ma sono costruiti su WGF 1.0 (occhio alla versione, è importante), WGF, come abbiamo capito è una versione di Direct3D9 con un po’ di pepe :-), le nuove funzionalità riguardano sopratutto le cross-process shared surface, ovvero la capacità di condividere una superficie tra diversi processi, tale caratteristica viene utilizzata da DWM per accedere così al backbuffer di ogni finestre, non è quindi necessario creare la nuova versione del notepad.exe con gli effetti di rotazione/3D/trasparenza built-in, ma è il DWM che, avendo accesso al backbuffer di ogni applicazione, potrà manipolarne le caratteristiche di rendering. Fra le altre modifiche di WGF segnalo finalmente “no more device lost”, questo significa che si erano rotti le scatole anche gli sviluppatori di Redmond di gestire la perdita del device D3D :-). Per chi non avesse capito un acca, un device per D3D è la virtualizzazione della scheda video, l’oggetto fondamentale per realizzare scene 3D, se l’utente esegue un resize della finestra o un banale ALT-Tab l’applicazione “perde” il controllo del device e occorre scrivere del codice, non difficile, ma comunque noioso e fastidioso per gestire il problema. Per fare un esempio del problema: avete mai provato a fare ALT-Tab su un gioco a fullscreen o poi ritornare sul videogame? Se il programmatore ha gestito correttamente il device lost non dovreste aver problemi, altrimenti sono innumerevoli gli errori possibili: freeze, eccezioni ecc..
Le altre funzionalità interessanti di WGF 1.0 sono una gestione migliorata sulle risorse, maggior controllo sul gamma e supporto per il rendering antialiased di testi.
L’ultimo componente, decisamente fondamentale nella strategia di Vista è colui che è stato nominato DirectX Next, poi DirectX 10, poi WGF 2.0 (non è un errore 2.0), ora sembra che ritorni con il nome di DirecX 10, ma in sintesi è la nuova versione di DirectX. L’architettura è stata ridisegnata, mentre Direct3D9 o WGF 1.0 si appoggiano alla common pipeline, DirectX 10 sarà completamente una nuova libreria per realizzare i nuovi videogame, fra le novità che introduce segnalo una grande consistenza nella gestione dell’hardware, questo significa che le schede video dovranno supportare tutta una serie di caratteristiche comuni molto ben delineate per definirsi DX10-compliant, stop quindi con i “capability test” per capire da codice quali funzionalità sono supportate dalla scheda video e quindi adattare il rendering di consequenza.
Tutto ciò comporta un grande passo avanti per il designer e il programmatore di applicazioni multimediali che non dovranno più preoccuparsi di “come” apparirà il software, visto che si vedrà alla stessa maniera su ogni device, ma potranno concentrarsi su altri aspetti quali l’interattività, la giocabilità ecc.. Se ci pensate questo significa inoltre che le GPU diventeranno come le attuali CPU: sul mercato esistono modelli con le caratteristiche più svariate ma la stessa applicazione fornisce lo stesso risultato su diverse CPU, così dovrebbe diventare il mondo delle schede video con DirectX 10.
Non voglio annoiarvi con le altre funzionalità specifiche di DirectX 10 ma voglio puntare l’attenzione sul nuovo livello di shader, chiamato Geometry Shader, si incastra fra il Vertex Shader e il Pixel Shader ed ha la visibilità sull’intera primitiva lavorando sui tre vertici del triangolo; è chiaro quindi affermare che lo sviluppo di applicazioni “spinte” DirectX sarà sempre più indirizzato verso l’utilizzo di shader lasciando indietro la vecchia fixed-function pipeline.
Visto che parliamo di versioni di DirectX come ultima nota di colore vi segnalo che la nuova Xbox 360 avrà a bordo una versione migliorata di DirectX 9, non quindi DirectX 10 e nemmemo WGF 1.0 (che cavolo se ne farebbe del desktop composition?), ma una versione ovviamente personalizzata per la nuova console di casa Microsoft.