Devo imparare Direct3D 9, 10 o 11? [chiuso]


14

Ho appena iniziato a programmare in 3D con Direct3D. Quale versione di D3D dovrei ritirare?

11 sembra piuttosto pulito, ma 9 e 10 sembrano ancora essere presenti. Dato lo stato attuale del settore dello sviluppo del gioco, quale versione ha più senso iniziare a utilizzare?


Le domande "Quale tecnologia usare" non sono buone domande Q / A.
MichaelHouse

Risposte:


12

Ciò dipende dal fatto che tu voglia progettare o meno un motore per produrre un gioco da realizzare in tre anni, o un anno o sei mesi, e se stai pensando o meno alle porte della console. Sarà relativamente facile lanciare una porta 360 del tuo gioco da Direct3D9, ma dovrai fare molto di più originando da D3D11. Ricorda che D3D11 blocca tutti gli utenti XP, se non necessariamente tutto l'hardware D3D9.

Il sondaggio Steam più recente suggerisce che circa il 16% delle persone utilizza ancora Windows XP. Puoi permetterti di tagliarli? Al termine del gioco, come sarà cambiato? Utilizzerai funzionalità che dipendono dall'API di livello superiore? Queste sono domande a cui dovrai rispondere da solo.

Direct3D 9 è dannatamente accessibile e puoi raggiungere molte persone con un gioco D3D9, ma i suoi giorni sono numerati, specialmente sul PC. Se non sei interessato a prendere di mira quelle persone, allora ha poco senso.

Oh, e non preoccuparti di DX10. Non c'è motivo di usarlo su DX11. A meno che non si desideri utilizzare D2D / DirectWrite, il che non è irragionevole.

Ovviamente, vale la pena ricordare che in DX11 non ci sono sostituti per le lezioni che, come hobbista, ho trovato estremamente utili in DX9. Come ID3DXMesh, ID3DXSprite, ID3DXFont, devono compilare ID3DXEffect dalla fonte, ecc. Microsoft consiglia DirectWrite per sostituire ID3DXFont, ma ovviamente si sono dimenticati di rendere DX11 compatibile con i nuovi sistemi Direct2D / DirectWrite, che a mio avviso erano incredibilmente stupidi .


Perché hanno rimosso il framework degli effetti? Era un IMO di classe molto utile.
dotminic

@__dominic: non viene rimosso, ma devi compilarlo da solo.
DeadMG

1
@__dominic: Come ha sottolineato DeadMG, il framework degli effetti non è stato rimosso, è stato inserito in un set autonomo di file di codice che puoi compilare da solo - questo è stato presumibilmente fatto per consentire una versione più fluida del core D3D, e facilitare i problemi di distribuzione (in particolare intorno a D3DX).

1
Penso che peggio del tagliare il 25% degli utenti di XP sia che solo il 17% ha GPU DX11 (fino ad ora).
DMan,

2
@DMan: D3D11 può essere eseguito su hardware di livello inferiore, incluso l'hardware D3D9.
DeadMG

9

tldr: impara D3D11.

La differenza tra 10 e 11 è piuttosto piccola, in termini di forma dell'API. D3D11 ti consente di utilizzare il livellamento verso il basso per scrivere codice sull'API D3D11 che verrà eseguito fino all'hardware di classe D3D9 (tieni presente che avrai comunque bisogno di Vista o superiore). Quindi potresti anche imparare la nuova API, che ritengo comunque più pulita e uniforme.

Tuttavia, se non si dispone di Vista o superiore o se si desidera eseguire il proprio codice su XP (ad esempio per distribuire il gioco agli utenti XP), è necessario utilizzare D3D9. Il mercato XP probabilmente si sta restringendo, quindi direi di andare per 11 se puoi.


3

Se sei completamente nuovo nella programmazione 3D, e specialmente se sei nuovo nella programmazione COM e Windows, ti consiglio caldamente di non imparare subito DirectX. Nella mia esperienza, DirectX è uno strumento estremamente potente, ma ha una curva di apprendimento molto ripida, che devi considerare oltre alle curve di apprendimento della programmazione Windows, della programmazione 3D e di molti altri. Se inizi con DirectX, potresti sentirti sopraffatto da tutti i dettagli della creazione del codice della caldaia, quindi ti sconsiglio.

Invece, consiglierei un'API più semplice che ti consenta di concentrarti maggiormente sull'apprendimento della programmazione 3D. XNA è piuttosto carino e poiché si trova al di sopra di DirectX, una volta passato a DirectX, avrai alcune idee che renderanno la curva di apprendimento di DirectX molto più facile da affrontare.

Ora, se hai esperienza nella programmazione 3D, come con OpenGL, e sai come fare la programmazione COM, consiglierei DirectX 11. Qualsiasi cosa tranne l'ultima versione è obsoleta e qualsiasi esperienza che ne ricaverai sarà utile per un arco di tempo più breve.

Ma ancora una volta, la vera esperienza viene dalla varietà, quindi ti consiglio di imparare sia DirectX e OpenGL, sia XNA se vuoi, e quante più API puoi. In questo modo, avrai una conoscenza astratta di come funziona la programmazione 3D con diversi strumenti e sarai in grado di utilizzare lo strumento giusto per ogni lavoro.


2

Raccomando DX11 o DX10. La differenza è molto piccola Puoi semplicemente fare più cose con DX11 (tessitura hw, gpgpu migliore, output su più trame su pixel shader ..). DirectX 9 ha un'altra architettura ed è un po 'datato al momento. Se stai chiedendo informazioni sull'attuale industria degli sviluppatori di giochi: per i giochi per PC sviluppati con cura è morto DX9.

Ma devo dire:
non preoccuparti di api , una volta che capisci davvero come funziona la grafica, l'apprendimento di una nuova api richiederebbe al massimo un mese. Ancora meno tempo.


3
DX9 non è obsoleto. Ci sono ancora un sacco di potenziali utenti su XP. Potrebbe non essere più in fase di sviluppo e diventerà obsoleto nei prossimi anni, ma per ora non lo è.
Il comunista Duck il

1
@thecommunistduck Sono d'accordo, ma DX9 è totalmente obsoleto per l'apprendimento. Perché una volta beginer che inizia a impararlo ora, lo saprà bene ... sarà obsoleto. E sicuramente l'ho detto male nella mia risposta.
Notabene,

-5

Ho sentito che dx9 con il sistema win xp è un sistema single core. È vecchia tecnologia. Ti consiglio dx11.


3
Questa risposta non aggiunge nulla di produttivo, ed è poco chiaro (e potenzialmente sbagliato e fuorviante) ciò che stai suggerendo riguardo a un "sistema single core".

1
Inoltre "Ho sentito che ..." non è una fonte credibile di prove (o praticamente nulla, davvero).
Massimo Massimo
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.