Cititorii ca tine ajută la sprijinirea MUO. Când efectuați o achiziție folosind link-uri de pe site-ul nostru, este posibil să câștigăm un comision de afiliat. Citeşte mai mult.

DirectX 12 a fost lansat împreună cu Windows 10 în 2015. Odată cu lansarea sa, Microsoft DirectX 12 a inaugurat o nouă eră pentru jucători și dezvoltatorii de jocuri. Capabil să reducă supraîncărcarea CPU, sporind în același timp performanța GPU-ului, DirectX 12 și-a făcut rapid un nume.

Cu toate acestea, creșterea performanței este într-adevăr la fel de simplă ca trecerea de la DirectX 11 la DirectX 12? Să aflăm analizând diferențele dintre DirectX 11 și 12.

Ce este Microsoft DirectX?

După cum se explică în prezentarea noastră de ansamblu asupra Microsoft DirectX, DirectX este o colecție de API-uri utilizate pentru gestionarea sarcinilor legate de multimedia. Aceasta include programarea jocurilor pe platforme bazate pe Microsoft precum Windows și Xbox. Pentru a oferi un context, să vorbim pe scurt despre API-uri.

O interfață de programare a aplicațiilor (API) face posibilă comunicarea între două sau mai multe programe de calculator, despre care discutăm în

instagram viewer
prezentarea noastră de ansamblu asupra API-urilor. Gândește-te la asta ca la un telefon. Dacă mama îți trimite un text cu o listă de cumpărături, telefonul tău va primi acele date și ți le va afișa. Acesta este practic un API.

Care sunt diferențele dintre DirectX 11 și DirectX 12?

Deci, care sunt diferențele dintre DirectX 11 și DirectX 12? Mai simplu spus, DirectX 12 este cea mai recentă versiune de DirectX. Una dintre cele mai vizibile diferențe dintre cele două este modul în care interacționează cu hardware-ul tău. Majoritatea jocurilor dezvoltate cu DirectX 11 folosesc doar între două și patru nuclee CPU. Unul dintre aceste nuclee este de obicei dedicat pentru a spune GPU-ului ce să facă.

Jocul folosește apoi nucleele rămase pentru a gestiona diverse setări intensive de CPU, cum ar fi particulele unui joc sau distanța de desen. Pe de altă parte, DirectX 12 distribuie volumul de lucru al procesorului pe mai multe nuclee și, de asemenea, permite fiecărui nucleu să vorbească cu GPU-ul în același timp.

DirectX 12 vine, de asemenea, cu niște clopote și fluiere fanteziste. Aceasta include calculul asincron și obiectele de stare pipeline (PSO). Calculul asincron crește utilizarea GPU-ului, permițând mai multor sarcini de lucru să funcționeze în paralel. Acest lucru deblochează, în esență, întregul potențial al GPU-ului dvs.

Pe lângă redarea grafică, GPU-ul dvs. este responsabil pentru gestionarea unei game largi de alte sarcini, cum ar fi rularea algoritmilor de învățare automată. Cu DirectX 11, GPU-ul poate efectua doar una dintre aceste sarcini la un moment dat și într-o anumită ordine. Când se întâmplă acest lucru, performanța este afectată, deoarece toate resursele dvs. GPU nu sunt folosite.

Gândește-te la asta ca la un chelner la restaurant. Când un chelner îți ia prima comandă, te întreabă ce ai vrea să bei mai întâi. Odată ce îți primești băuturile, ei te întreabă ce ai dori pentru felul principal. Comanda dvs. este preluată în pași. Chelnerul nu te va întreba ce ai vrea la desert înainte de a fi servit felul principal. Deși acest lucru este eficient, nu este atât de eficient pe cât ar putea fi.

În calcul, fiecare dintre sarcinile chelnerului ar fi gestionată de o resursă GPU diferită. Până când veți primi băutura, resursele GPU necesare pentru a vă prelua comanda pentru felul principal ar fi inactiv. Cu calculul asincron al DirectX 12, chelnerul ar putea să vă preia comanda dintr-o dată, ca într-un lanț de fast-food. Acest lucru maximizează utilizarea GPU-ului și îmbunătățește performanța în joc.

DirectX 12 a introdus și PSO-uri. Cu DirectX 11, atunci când geometria unui joc este trimisă la GPU la fi redate, o varietate de setări hardware sunt responsabile pentru interpretarea și redarea acestora date. Aceasta este denumită conducta grafică și este fluxul de intrări și ieșiri de date care apar pe măsură ce GPU-ul dvs. redă cadre. Cu toate acestea, conducta grafică a DirectX 11 nu este perfectă.

Această conductă conține o colecție de stări diferite, inclusiv starea de rasterizare, starea de amestecare și starea șablonului de adâncime, printre alte componente. În DirectX 11, există dependențe între aceste stări diferite. Ca rezultat, o stare nu poate fi finalizată până când nu este definită starea anterioară. Acest lucru scade utilizarea GPU-ului și crește supraîncărcarea CPU cu prețul performanței.

Pentru a ocoli acest lucru, DirectX 12 a introdus PSO-uri, care sunt obiecte care descriu starea întregii conducte grafice. PSO-urile sunt ca o sticlă care conține diferitele stări și componente necesare pentru a crea o imagine. Acest lucru permite GPU-ului să preproceseze fiecare stare dependentă în loc să fie nevoită să recalculeze continuu stările pe baza conductei grafice curente.

Acest lucru reduce semnificativ supraîncărcarea CPU găsită în DirectX 11 și îmbunătățește performanța. Deci, cum arată de fapt această diferență? Ei bine, conform Microsoft, DirectX 12 reduce supraîncărcarea CPU cu până la 50 la sută și îmbunătățește performanța GPU-ului cu până la 20 la sută. Deși acestea sunt niște îmbunătățiri substanțiale, acest lucru nu înseamnă că veți vedea aceleași rezultate.

De ce trecerea de la DirextX 11 la DirectX 12 nu este simplă

DirectX 11 a fost lansat pentru prima dată pentru Windows Vista pe 27 octombrie 2009. Deci, cu DirectX 12 care urmează în 2015, acesta este o diferență de șase ani între DirectX 11 și DirectX 12. În acest timp, mii de jocuri au fost dezvoltate folosind DirectX 11. Din păcate, trecerea de la DirectX 11 la DirectX 12 nu este deloc ușoară.

DirectX 11 este ceea ce se numește un API de nivel înalt. Pentru a spune simplu, API-urile de nivel înalt sunt mai ușor de lucrat pentru dezvoltatori. Rezultatul sunt jocuri stabile, lustruite și jucabile. Pe de altă parte, DirectX 12 este un API de nivel scăzut și este o bestie diferită în comparație cu DirectX 11. În timp ce permite dezvoltatorilor să ajusteze optimizarea la nivel granular, necesită, de asemenea, cunoștințe extinse pentru utilizare.

Acestea fiind spuse, un joc dezvoltat în DirectX 12 ar putea avea performanțe mai slabe, în funcție de cunoștințele dezvoltatorului despre API. Există îmbunătățiri care vin cu DirectX 12, dar într-adevăr se reduce la cât de bine îl poate implementa un dezvoltator. Din acest motiv, mulți dezvoltatori aleg să rămână la API-uri de nivel înalt precum DirectX 11.

Ar trebui să alegeți DirectX 11 sau DirectX 12?

Răspunsul depinde de câteva lucruri, cum ar fi ce joc încerci să rulezi. De exemplu, Guild Wars 2 rulează pe DirectX 11. Chiar dacă sistemul de operare și hardware-ul dvs. folosesc DirectX 12, nu veți avea opțiunea de a selecta DirectX 11 în Guild Wars 2, deoarece jocul nu îl acceptă. Aceasta este în întregime decizia dezvoltatorului, ArenaNet.

Credit imagine: Martin Kerstein/Guild Wars 2

Credeți sau nu, a durat nouă ani pentru ca ArenaNet să facă trecerea de la DirectX 9 la DirectX 11. Cu toate acestea, există unele jocuri care acceptă atât DirectX 11, cât și DirectX 12. Fortnite (citește fișa noastră de cheat Fortnite), de exemplu. Prin setările jocului, utilizatorii pot comuta între ambele versiuni. Pentru a rezuma, nu toate jocurile acceptă atât DirectX 11, cât și DirectX 12. Pentru cei care o fac, comutați între cele două și determinați singur care funcționează mai bine pe computer.

Dacă puteți alege între DirectX 11 și DirectX 12, va depinde și de hardware-ul dvs. Aproape orice GPU modern va suporta DirectX 12, dar nu același lucru se poate spune despre GPU-urile mai vechi, cum ar fi Radeon HD 4870. Lansat în 2008, acest GPU acceptă doar până la DirectX 10. Aceasta înseamnă că ar fi incapabil să ruleze majoritatea jocurilor moderne, care rulează folosind DirectX 11 și DirectX 12.

Este DirectX 12 alegerea potrivită pentru tine?

Una peste alta, trecerea de la DirectX 11 la DirectX 12 nu este atât de alb-negru pe cât pare. Depinde de o varietate de factori, cum ar fi hardware, software, sistemul de operare și dacă un joc le acceptă pe ambele. Toate acestea trebuie luate în considerare înainte de a lua o decizie, iar acest lucru va fi probabil valabil și pentru generațiile viitoare de DirectX.