DirectX è un pacchetto di API realizzato da Microsoft che consente di gestire le attività del computer relative ai contenuti della macchina in uso. In questo contesto è inclusa la programmazione di giochi, non solo per quanto riguarda Windows ma anche per Xbox. Per capire meglio come funziona il tutto però, è bene anche comprendere cosa sono le API.
Stiamo parlando di un’'interfaccia di programmazione dell'applicazione (API) consente a due o più programmi di computer di comunicare tra loro. Per avere un’idea più concreta su questa meccanica, prova a pensare a un telefono. Se tua madre ti invia un messaggio con una lista della spesa, il tuo telefono riceverà quei dati e li visualizzerà per te. Questo è il meccanismo di funzionamento API, ridotto ai minimi termini.
Tale sistema di comunicazione, con il passare degli anni, è stato evoluto non poco. DirectX infatti, appare sui nostri computer nel 1994, inizialmente legate al contesto videoludico. Da allora, Microsoft non ha mai smesso di sviluppare tali software, arrivando fino alle DirectX 12, rilasciate in contemporanea con Windows 10.
Con il suo rilascio, DirectX 12 di Microsoft ha inaugurato una nuova era per videogiocatori e sviluppatori. Capace di ridurre l'overhead della CPU aumentando al contempo le prestazioni della GPU, DirectX 12 si è fatto rapidamente apprezzare da molti utenti Windows.
Ma il tutto è davvero così semplice come sembra? Qual è la reale differenza tra DirectX 11 e la versione successiva? In questo articolo cercheremo di fare un po’ di chiarezza a riguardo.
![directx](https://www.outofbit.it/wp-content/uploads/2023/01/directx-1024x422.jpg)
Quali sono le differenze tra DirectX 11 e DirectX 12?
Quindi, quali sono le differenze tra DirectX 11 e DirectX 12? Come appare logico, si tratta di due release rilasciate con tempi diversi e, con la seconda, che si adatta meglio all’hardware moderno. Una delle differenze più evidenti tra le due, è il modo in cui interagiscono con il tuo computer. La maggior parte dei giochi sviluppati con DirectX 11 utilizza solo da due a quattro core della CPU. Uno di questi core è solitamente dedicato ad impartire ordini alla GPU su come comportarsi.
Il gioco utilizza quindi i core rimanenti per gestire varie cose che impegnano le risorse della CPU, come gli effetti particellari di un gioco o la distanza della visuale su schermo. D'altra parte, DirectX 12 distribuisce il carico di lavoro di una CPU su più core e consente inoltre a ognuno di essi di comunicare con la GPU in contemporanea.
DirectX 12 viene fornito anche con alcune funzioni extra. Tra di esse possiamo citare il calcolo asincrono e gestione dello stato della pipeline grafica (PSO). Il calcolo asincrono aumenta l'utilizzo della GPU consentendo a più carichi di lavoro di funzionare in parallelo. Questo essenzialmente sblocca il pieno potenziale della tua GPU. Oltre al rendering grafico, la tua GPU è responsabile della gestione di un'ampia gamma di altre attività, come l'esecuzione di algoritmi di apprendimento automatico.
Con DirectX 11, la GPU può eseguire solo una di queste attività alla volta e in un certo ordine. Quando ciò si verifica, le prestazioni subiscono un calo perché vi è un sovraccarico della GPU.
Pensalo come un cameriere in un ristorante: quando prende per la prima volta il tuo ordine, ti chiede cosa vorresti bere prima. Una volta ricevuti i tuoi drink, ti chiedono cosa vorresti da mangiare. Il tuo ordine viene preso in diversi passaggi e, il cameriere, non ti chiederà mai cosa vorresti per dessert prima che tu abbia mangiato il piatto principale. Tutto ciò non avrebbe logica.
In informatica, ciascuna delle attività del cameriere viene gestita da una diversa risorsa GPU: fino a quando non riceverai il tuo drink, le risorse della GPU necessarie per prendere l'ordine del tuo piatto principale rimarranno inattive. Con il calcolo asincrono di DirectX 12, il cameriere sarebbe in grado di prendere il tuo ordine tutto in una volta come in una catena di fast food. Ciò massimizza l'utilizzo della GPU e migliora le prestazioni di gioco.
![In questo articolo scopriremo passo passo le istruzioni necessarie per l'overclock della scheda grafica in sicurezza](https://www.outofbit.it/wp-content/uploads/2017/05/overclock-GPU.jpg)
DirectX 12 e gli OSP
DirectX 12 ha anche introdotto gli OSP. Con DirectX 11, quando la geometria di un gioco viene inviata alla GPU per il rendering, una varietà di impostazioni hardware è responsabile dell'interpretazione di questi dati. Questa è definita pipeline grafica ed è il flusso di input e output di dati che si verificano quando la GPU esegue il rendering dei frame. Devi però sapere che la pipeline grafica di DirectX 11 non è perfetta.
Questa infatti contiene una raccolta di stati diversi, tra cui quello di rasterizzazione, lo stato di fusione e quello relativo allo stencil di profondità, tra gli altri componenti. In DirectX 11 esistono dipendenze tra questi diversi stati. Di conseguenza, uno stato non può essere completato finché non viene definito lo stato precedente. Ciò riduce l'utilizzo della GPU e aumenta il sovraccarico della CPU a scapito delle prestazioni.
Per aggirare questo problema, DirectX 12 ha introdotto i PSO, che sono oggetti che descrivono lo stato dell'intera pipeline grafica. I PSO sono come una bottiglia che contiene i vari “componenti” necessari per creare un'immagine. Ciò consente alla GPU di pre-elaborare ogni stato dipendente invece di dover ricalcolare continuamente gli stati in base alla pipeline grafica corrente.
Ciò riduce significativamente il sovraccarico della CPU riscontrato in DirectX 11 e migliora le prestazioni. Quindi, che aspetto ha effettivamente questa differenza? Bene, secondo Microsoft, DirectX 12 riduce il sovraccarico della CPU fino al 50% e migliora le prestazioni della GPU fino al 20%. Sebbene si tratti di miglioramenti sostanziali, esistono ancora alcuni piccoli dubbi da chiarire.
Perché passare da DirextX 11 a DirectX 12 non è così semplice
DirectX 11 è stato rilasciato per la prima volta per Windows Vista il 27 ottobre 2009. Quindi, con DirectX 12 successivo nel 2015, si tratta di un intervallo di 6 anni tra i due rilasci. Durante questo periodo, migliaia di giochi sono stati sviluppati utilizzando DirectX 11 e, il passaggio tra le due tecnologie, è più ostico di quanto potresti pensare.
DirectX 11 è ciò che viene chiamato un'API di “alto livello”. Per dirla semplicemente, le API di alto livello sono più facili da utilizzare per gli sviluppatori: il risultato sono giochi stabili, rifiniti e giocabili. D'altra parte, DirectX 12 è un'API di basso livello e offre strutture molto diverse rispetto alla controparte. Sebbene consenta agli sviluppatori di ottimizzare l'ottimizzazione a livello granulare, richiede anche una vasta conoscenza per un utilizzo ottimale.
A livello teorico, adottando DirectX 12 si ha a che fare con un sistema migliore ma, il risultato finale, dipende dal lavoro dello sviluppatore. Di fatto, alcuni studi di sviluppo, per proporre software ottimali, rinunciano alle DirectX più recenti e optano per la versione precedente.
Qual è la scelta migliore per te?
La risposta dipende da alcune variabili, come il gioco che stai cercando di eseguire sul tuo computer.
Ad esempio, Guild Wars 2 funziona su DirectX 11. Gli sviluppatori hanno infatti deciso di optare esclusivamente per tale versione. Che tu ci creda o no, ArenaNet (lo studio che ha prodotto il titolo) ha impiegato ben 9 anni per passare da DirectX 9 a DirectX 11 e non vogliono impiegare una tempistica simile per ottimizzare nuovamente il loro titolo.
Tuttavia, ci sono alcuni giochi che supportano entrambe le soluzioni. Fortnite è forse l’esempio più lampante in questo senso. Attraverso le impostazioni del gioco, gli utenti possono passare da una versione all'altra con disinvoltura.
Per riassumere, non tutti i giochi supportano entrambe le tecnologie. Per quelli che lo fanno, puoi liberamente fare test con i titoli per capire a quale si adattano meglio. Non solo: tieni anche presente che la tua configurazione hardware ha un peso specifico notevole nel funzionamento o meno di una delle due versioni di DirectX.
Qualsiasi GPU moderna supporterà DirectX 12, ma lo stesso non si può dire per le GPU più vecchie come la Radeon HD 4870. Rilasciata nel 2008, questa GPU supporta solo fino a DirectX 10. Ciò significa che non sarebbe in grado di eseguire la maggior parte giochi moderni, che funzionano con DirectX 11 e DirectX 12.
Per ulteriori informazioni sulla GPU, ti consigliamo di dare uno sguardo a questo articolo.
DirectX 12 è la scelta giusta per te?
Tutto sommato, passare da DirectX 11 a DirectX 12 non è così logico come può sembrare superficialmente. Dipende da una varietà di fattori come hardware, software, sistema operativo e se un gioco supporta una o entrambe le soluzioni. Tutti questi fattori devono essere considerati prima di prendere una decisione, e questo sarà probabilmente vero anche per le future generazioni di DirectX.