C'è qualche vantaggio nell'usare DX10 / 11 per un gioco 2D?


10

Non ho familiarità con il set di funzionalità introdotto dall'hardware di classe DX10 / 11. Conosco vagamente le nuove fasi aggiunte alla pipeline grafica programmabile, come lo shader della geometria, lo shader di calcolo e le nuove fasi di tassellatura. Non vedo come nessuno di questi faccia la differenza per un gioco 2D.

C'è qualche motivo convincente per passare a DX10 / 11 (o equivalenti OpenGL) per un gioco 2D, o sarebbe più saggio attenersi a DX9 considerando che una quota significativa del mercato funziona ancora con tecnologie più vecchie (ad es. Febbraio 2012 I sondaggi su Steam indicano che circa il 17% degli utenti utilizza ancora Windows XP)?

Risposte:


5

Dipende da cosa stai facendo. Se stai usando Direct3D, l' unico motivo per passare è ottenere l'accesso a funzionalità hardware che altrimenti non potresti ottenere.

Per un gioco 2D, è teoricamente possibile che alcune funzionalità possano interessarti. Ad esempio, OpenCL o DirectCompute. Civilization V utilizza DirectCompute per decomprimere le trame. Ciò riduce drasticamente i tempi di caricamento, perché deve solo caricare i dati compressi. E i giochi 2D hanno spesso molte immagini. Se il tempo di caricamento è un problema, questo potrebbe aiutare.

OpneCL dovrebbe essere disponibile su tutto l'hardware GeForce 8xxx e versioni successive. Su ATI, è disponibile su HD 4xxx e hardware migliore.

Direi che la più grande caratteristica che potresti usare in DX11 è la possibilità di leggere e scrivere in modo più arbitrario immagini negli shader. Ciò potrebbe essere utile per alcuni effetti specializzati. Non riesco a pensare a nessuno in questo momento ... che dovrebbe dirti quanto è probabile che questo sia importante.

In generale, direi che se stai usando D3D, probabilmente non otterrai molto. E se non capisci già quali sono le nuove funzionalità e desideri utilizzarle nel tuo gioco, quasi sicuramente non guadagnerai molto. Molti di loro saranno più complessi.

OpenGL è diverso per uno dei motivi principali. OpenGL 2.1 (l'equivalente più o meno di D3D9) fa schifo come API. OpenGL 3.3 (oltre ad alcune estensioni più recenti eseguite su hardware 3.3) migliora molto l'API. Localizzazione esplicita degli attributi, separazione dei programmi shader, tutto nel pacchetto linguistico shading 420 e così via.

Alcuni di questi funzionano abbastanza bene in forma di estensione contro 2.1. Alcuni di loro ... no. Non sono ancora sicuro se sia corretto utilizzare percorsi di attributi espliciti con attributedichiarazioni (prima della insintassi corrente ). Shading language pack 420 afferma specificamente che non funziona con le versioni GLSL precedenti alla 1.30 (aka: OpenGL 3.0).

Ciò non significa che GL 2.1 sia inutilizzabile. È certamente funzionale e funzionale, semplicemente non piacevole. Anche se alcuni driver che troverai che implementano non sono riparabili. L'hardware DX9 di ATI non è più supportato, quindi quei driver sono davvero difettosi. E Intel non si è mai preoccupata di OpenGL, quindi usare shader sul loro hardware è una fortuna.

Ma personalmente, se la tua base di utenti prevista lo consente, spingerei a GL 3.3 se stai usando OpenGL. In caso contrario, dovrai solo affrontare i problemi 2.1.


5

Ci sono alcune cose che penso dovresti considerare:

  • Se hai un motore D3D9 ben collaudato, probabilmente non vale la pena portarlo su D3D11, se non utilizzerai le nuove funzionalità. Quando si parte da zero, D3D11 è molto più allettante.

  • Entro quanto tempo sarà la data di uscita del tuo gioco? XP sarà fuori supporto tra poco più di due anni, e se guardi i dati storici che la base di installazione di XP sta cadendo abbastanza rapidamente (~ 1% / mese su Steam).

  • Considera quale percentuale del 17% degli utenti XP avrebbe un PC che soddisfa le specifiche minime per il tuo gioco in D3D9. Più è alto, più vale la pena supportarli.

  • DX10 è in gran parte inutile da utilizzare per i nuovi sviluppi. DX11 funziona con gli stessi sistemi operativi e hardware (tramite livelli di funzionalità).

  • DX11 supporta un renderer software (WARP) come dispositivo di fallback, che può essere abbastanza veloce da eseguire un gioco con bassi requisiti GPU.

  • DX9 nativo supporta più funzioni rispetto a D3D11 quando utilizza uno dei livelli di funzionalità D3D9. Per fortuna l'hardware DX9 nei PC compatibili con DX10 è raro.

  • L'hardware DX10 / 11 ha funzionalità molto meno diversificate, quindi, se si fa in modo che l'hardware DX9 utilizzi WARP, non è necessario preoccuparsi di limitazioni imbarazzanti con cose come trame non power-of-two o mappatura texel-pixel scomoda .

  • Se il tuo gioco sarà ad alta intensità hardware, DX11 ha alcuni trucchi extra disponibili per migliorare le prestazioni. Ad esempio il multithreading del codice di disegno.


Sono un po 'confuso riguardo ai livelli di funzionalità. Se sviluppo utilizzando DX11 ma ho come target un livello di funzionalità DX9, capisco che verrà eseguito su hardware DX9. Ma richiederà comunque il runtime DX11, cioè funzionerà su Windows XP?
David Gouveia,

DX11 non funziona affatto su XP. Ciò che fanno i livelli di funzionalità è che consente di utilizzare l'API DX11 con hardware precedente. Controlla msdn.microsoft.com/en-us/library/ff476876%28v=vs.85%29.aspx per i dettagli su ciò che consente ogni livello di funzionalità.
Adam

1

I soli shader di geometria sono un motivo per usare D3D10 / 11, se prevedi di avere un gran numero di particelle o sprite.

DirectCompute può essere utilizzato anche per alcuni vantaggi della velocità.

Personalmente, avere semplicemente l'API di gran lunga più pulita e gradevole di D3D10 / 11 è una ragione sufficiente per non toccare mai più D3D9 o OpenGL per qualsiasi progetto moderno solo per Windows. Realisticamente, tuttavia, la necessità di indirizzare i dispositivi mobili con GL | ES e la folla WinXP ancora considerevole richiede di evitare D3D10 / 11 e attenersi a D3D9 o OpenGL.

Notare che seguendo la rotta OpenGL è possibile ottenere shader di geometria, OpenCL e altre funzionalità hardware più recenti anche su WinXP.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.