¿Debo aprender Direct3D 9, 10 u 11? [cerrado]

14

Estoy empezando a entrar en la programación 3D con Direct3D. ¿Qué versión de D3D debo recoger?

11 parece bastante ordenado, pero 9 y 10 todavía parecen estar bastante presentes. Dado el estado actual de la industria del desarrollo de juegos, ¿qué versión tiene más sentido comenzar a usar?

dotminic
fuente
Las preguntas de "Qué tecnología usar" no son buenas preguntas de preguntas y respuestas.
MichaelHouse

Respuestas:

12

Eso depende de si quieres o no diseñar un motor para producir un juego que se haga en tres años, o un año o seis meses, y si estás pensando o no en puertos de consola. Será relativamente fácil tirar un puerto 360 de tu juego desde Direct3D9, pero tendrás que hacer mucho más desde D3D11. Recuerde que D3D11 bloquea a todos los usuarios de XP, si no necesariamente a todo el hardware D3D9.

La encuesta más reciente de Steam sugiere que alrededor del 16% de las personas todavía usan Windows XP. ¿Puedes permitirte cortarlos? Para cuando termine su juego, ¿cómo habrá cambiado esto? ¿Va a utilizar funciones que dependen de la API de nivel superior? Estas son preguntas que deberá responder usted mismo.

Direct3D 9 es bastante accesible y puedes llegar a muchas personas con un juego D3D9, pero sus días están contados, especialmente en la PC. Si no está interesado en apuntar a esas personas, entonces no tiene sentido.

Ah, y no te molestes con DX10. No hay ninguna razón para usarlo en DX11. A menos que desee utilizar D2D / DirectWrite, lo cual no es irrazonable.

Por supuesto, vale la pena mencionar que en DX11, no hay reemplazos para las clases que, como aficionado, encontré extremadamente útil en DX9. Tales como ID3DXMesh, ID3DXSprite, ID3DXFont, tienen que compilar ID3DXEffect de la fuente, etc. Microsoft recomienda DirectWrite para reemplazar ID3DXFont, pero por supuesto, se olvidaron de hacer que DX11 sea compatible con los nuevos sistemas Direct2D / DirectWrite, que en mi opinión fue deslumbrantemente estúpido .

DeadMG
fuente
¿Por qué eliminaron el marco de efectos? Fue una clase IMO muy útil.
dotminic
@__dominic: no se elimina, pero debe compilarlo usted mismo.
DeadMG
1
@__dominic: como señaló DeadMG, el marco de efectos no se eliminó, se factorizó en un conjunto independiente de archivos de código que puede compilar usted mismo; esto supuestamente se hizo para permitir que se versione de manera más fluida que el núcleo D3D, y facilitar los problemas de implementación (particularmente alrededor de D3DX).
1
Creo que peor que eliminar el 25% de los usuarios de XP es que solo el 17% tiene GPU DX11 (a partir de ahora).
DMan
2
@DMan: D3D11 puede ejecutarse en hardware de nivel inferior, incluido el hardware D3D9.
DeadMG
9

tldr: Aprende D3D11.

La diferencia entre 10 y 11 es bastante pequeña, en términos de la forma de la API. D3D11 le permite usar la reducción de nivel para escribir código en la API D3D11 que se ejecutará hasta el hardware de clase D3D9 (tenga en cuenta que aún necesitará Vista o mejor). Por lo tanto, también puede aprender la API más nueva, que creo que es más limpia y más uniforme de todos modos.

Sin embargo, si no tiene Vista o superior, o si finalmente desea que su propio código se ejecute en XP (por ejemplo, para distribuir su juego a los usuarios de XP), tendrá que usar D3D9. Sin embargo, el mercado de XP probablemente se está reduciendo, así que diría que ve por 11 si puedes.


fuente
3

Si eres completamente nuevo en la programación 3D, y especialmente si eres nuevo en la programación COM y Windows, te recomiendo encarecidamente que no aprendas DirectX ahora. En mi experiencia, DirectX es una herramienta extremadamente poderosa, pero tiene una curva de aprendizaje muy empinada, que debes considerar además de las curvas de aprendizaje de la programación de Windows, la programación 3D y muchas otras. Si comienza con DirectX, puede sentirse abrumado por todos los detalles de hacer código repetitivo, por lo que le aconsejo que no lo haga.

En cambio, recomendaría una API más simple que le permita centrarse más en aprender sobre programación 3D. XNA es bastante agradable, y dado que se encuentra en la parte superior de DirectX, una vez que se mude a DirectX, tendrá algunas ideas que harán que la curva de aprendizaje de DirectX sea mucho más fácil de asumir.

Ahora, si tiene experiencia en programación 3D, como con OpenGL, y sabe cómo hacer programación COM, recomendaría DirectX 11. Cualquier cosa que no sea la última versión es obsoleta, y cualquier experiencia que obtenga será útil para un lapso de tiempo más corto

Pero, de nuevo, la verdadera experiencia proviene de la variedad, por lo que te recomiendo que aprendas tanto DirectX como OpenGL, y también XNA si lo deseas, y tantas API como puedas. De esa manera, tendrá un conocimiento abstracto de cómo funciona la programación 3D con diferentes herramientas, y podrá utilizar la herramienta adecuada para cada trabajo.


fuente
2

Recomiendo DX11 o DX10. La diferencia es muy pequeña. Puede hacer más cosas con DX11 (teselación hw, mejor gpgpu, salida a múltiples texturas en pixel shader ...). DirectX 9 tiene otra arquitectura y está poco desactualizado en este momento. Si está preguntando sobre la industria actual de desarrollo de juegos: para juegos de PC desarrollados con seguridad, DX9 está muerto.

Pero tengo que decir:
no te preocupes por la API , una vez que realmente entiendas cómo funcionan los gráficos, aprender una API nueva tomará un máximo de un mes. Incluso tiempo más corto.

Notabene
fuente
3
DX9 no está desactualizado. Todavía hay una tonelada de usuarios potenciales en XP. Es posible que ya no esté en desarrollo y que en los próximos años quedará desactualizado, pero por ahora no lo está.
El pato comunista
1
@thecommunistduck Estoy de acuerdo, pero DX9 está totalmente desactualizado para aprenderlo. Porque una vez que los principiantes que comienzan a aprenderlo ahora lo sabrán bien ... quedarán obsoletos. Y seguro que lo dije mal en mi respuesta.
Notabene
-5

Escuché que dx9 con el sistema win xp es un sistema basado en un solo núcleo. Es vieja tecnología. Te recomiendo dx11.

seo
fuente
3
Esta respuesta no agrega nada productivo, y no está claro (y potencialmente incorrecto y engañoso) lo que sugiere con respecto a un "sistema de núcleo único".
1
Además, "escuché que ..." no es una fuente creíble de evidencia (o casi cualquier cosa, en realidad).
Maximus Minimus