Devo aprender Direct3D 9, 10 ou 11? [fechadas]


14

Estou apenas começando a entrar em programação 3D com o Direct3D. Qual versão do D3D devo comprar?

11 parece bem arrumado, mas 9 e 10 ainda parecem bem presentes. Dado o estado atual da indústria de desenvolvimento de jogos, qual versão faz mais sentido começar a usar?


As perguntas sobre "qual tecnologia usar" não são boas para perguntas e respostas.
MichaelHouse

Respostas:


12

Isso depende se você deseja ou não projetar um mecanismo para produzir um jogo a ser realizado em três anos ou um ano ou seis meses, e se você está pensando ou não nas portas do console. Será relativamente fácil jogar uma porta 360 do seu jogo no Direct3D9, mas você precisará fazer muito mais com o D3D11. Lembre-se de que o D3D11 bloqueia todos os usuários do XP, se não necessariamente todo o hardware do D3D9.

A pesquisa mais recente do Steam sugere que cerca de 16% das pessoas ainda usam o Windows XP. Você pode dar ao luxo de cortá-los? Quando o jogo terminar, como isso vai mudar? Você vai usar recursos que dependem da API de nível superior? Estas são perguntas que você precisará responder a si mesmo.

O Direct3D 9 é bastante acessível e você pode alcançar muitas pessoas com um jogo D3D9, mas seus dias estão contados, especialmente no PC. Se você não está interessado em segmentar essas pessoas, há pouco sentido.

Ah, e não se preocupe com o DX10. Não há nenhuma razão para usá-lo no DX11. A menos que você queira usar o D2D / DirectWrite, o que não é razoável.

Claro, vale ressaltar que no DX11, não há substitutos para as classes que, como hobby, eu achei extremamente útil no DX9. Tais como ID3DXMesh, ID3DXSprite, ID3DXFont, precisam compilar o ID3DXEffect da fonte etc. A Microsoft recomenda o DirectWrite para substituir o ID3DXFont, mas é claro que eles esqueceram de tornar o DX11 compatível com os novos sistemas Direct2D / DirectWrite, o que, na minha opinião, era estupidamente estúpido. .


Por que eles removeram a estrutura de efeitos? Era uma classe IMO muito útil.
dotminic

@__dominic: Não foi removido, mas você deve compilá-lo.
DeadMG

1
@__dominic: Como o DeadMG apontou, a estrutura de efeitos não foi removida, foi fatorada em um conjunto autônomo de arquivos de código que você pode compilar - isso foi supostamente feito para permitir a versão mais fluida do que o núcleo do D3D, e facilitar os problemas de implantação (principalmente em torno do D3DX).

1
Acho que pior do que eliminar 25% dos usuários de XP é que apenas 17% têm GPUs DX11 (a partir de agora).
dman

2
@DMan: O D3D11 pode ser executado em hardware de nível inferior, incluindo o hardware D3D9.
DeadMG

9

tldr: Aprenda D3D11.

A diferença entre 10 e 11 é bem pequena, em termos da forma da API. O D3D11 permite que você use o nível inferior para escrever código na API do D3D11, que será executada até o hardware da classe D3D9 (observe que você ainda precisará do Vista ou melhor). Então, você também pode aprender a API mais nova, que eu acho que é mais limpa e uniforme.

No entanto, se você não possui o Vista ou melhor, ou eventualmente deseja que seu próprio código seja executado no XP (para, por exemplo, distribuir seu jogo para usuários do XP), você precisará usar o D3D9. No entanto, o mercado de XP provavelmente está encolhendo, então eu diria que vá para 11, se puder.


3

Se você é completamente novo em programação 3D e, especialmente, em programação COM e Windows, eu recomendaria fortemente que não aprendesse o DirectX agora. Na minha experiência, o DirectX é uma ferramenta extremamente poderosa, mas possui uma curva de aprendizado muito acentuada, que você deve considerar além das curvas de aprendizado da programação do Windows, da programação 3D e de muitas outras. Se você começar com o DirectX, poderá se sentir sobrecarregado com todos os detalhes da criação de código padrão, por isso aconselho contra isso.

Em vez disso, eu recomendaria uma API mais simples que permita que você se concentre mais em aprender sobre programação 3D. O XNA é bastante interessante e, como está no topo do DirectX, depois de migrar para o DirectX, você terá algumas idéias que facilitarão a curva de aprendizado do DirectX.

Agora, se você tem experiência em programação 3D, como no OpenGL, e sabe como fazer programação COM, recomendo o DirectX 11. Qualquer coisa, exceto a versão mais recente, é obsoleta e qualquer experiência obtida será útil para um curto período de tempo.

Mas, novamente, a verdadeira experiência vem da variedade, então eu recomendo que você aprenda o DirectX e o OpenGL, e também o XNA, se quiser, e o maior número possível de APIs. Dessa forma, você terá um conhecimento abstrato de como a programação 3D funciona com ferramentas diferentes e poderá usar a ferramenta certa para cada trabalho.


2

Eu recomendo o DX11 ou o DX10. A diferença é muito pequena. Você pode fazer mais coisas com o DX11 (hw tessalation, melhor gpgpu, saída para várias texturas no pixel shader ..). O DirectX 9 tem outra arquitetura e está pouco desatualizado no momento. Se você está perguntando sobre a atual indústria de desenvolvedores de jogos: para jogos para PC atualmente desenvolvidos, o DX9 está morto.

Mas devo dizer:
não se importe com a API , uma vez que você realmente entenda como os gráficos funcionam, aprender uma nova API levará no máximo um mês. Tempo ainda mais curto.


3
O DX9 não está desatualizado. Ainda existem muitos usuários em potencial no XP. Pode não estar mais em desenvolvimento e ficará desatualizado nos próximos anos, mas por enquanto não está.
The Duck comunista

1
@thecommunistduck Eu concordo, mas o DX9 está totalmente desatualizado por aprendê-lo. Porque uma vez iniciante que começar a aprender agora, saberá bem ... ficará desatualizado. E com certeza eu disse mal na minha resposta.
Notabene

-5

Ouvi dizer que o dx9 com o sistema win xp é um sistema baseado em um único núcleo. É tecnologia antiga. Eu recomendo que você dx11.


3
Essa resposta não adiciona nada produtivo e não está claro (e potencialmente errado e enganoso) o que você está sugerindo sobre um "sistema de núcleo único".

1
Além disso, "ouvi dizer que ..." não é uma fonte credível de evidência (ou praticamente qualquer coisa, na verdade).
Maximus Minimus
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.