2010-04-03 20 views
10

Quiero hacer proyectos para que mi currículum sea más atractivo para las compañías de juegos. Así que voy a empezar a comprar libros. Pero no sé leer los libros DirectX 9 o 10 api para comenzar. DirectX10 es genial, pero parece que la industria se está moviendo lentamente a 10. ¿Debo usar 9 o ir con 10?DirectX 9 o DirectX 10 para principiantes?

+3

¿Por qué no DirectX 11?! – AndiDog

+0

Si se desarrolla para el mayor público posible, DX9. De lo contrario, DX11. – derpface

+0

@uberwulu Ya no. [Win 7 rompió 50% a finales de 2011] (http://www.w3schools.com/browsers/browsers_os.asp)/[principios de 2012] (http://unity3d.com/webplayer/hwstats/pages/web-2012Q4- os.html) – bobobobo

Respuesta

14

Sugiero aprender los conceptos básicos usando directx9 y luego pasar rápidamente a dx11. DirectX11 es más difícil de iniciar que DirectX9 porque es un poco más complejo, pero también muchas de las funciones de utilidad de D3DX ya no existen o se han movido al código fuente como el framework de efectos. Esto no es malo, pero sí lo hace significativamente más complejo de aprender ya que tienes que aprender muchas más cosas a la vez.

pasar 2 o 3 semanas de aprendizaje DX9 luego pasar a DX11 para el trabajo "real": P

Learn DX9 básica utilizando la tubería fija y D3DX para los modelos de carga, etc. Es mucho más simple que DX11 y mucho mejor documentado, y obtendrás un triángulo y luego un modelo en pantalla mucho más rápido. Juega con eso hasta que comprendas completamente los conceptos básicos y las transformaciones.

Pero a continuación, vuelva a escribirlo todo utilizando solo sombreadores. Deberás usarlos en DX10/11 de todos modos, pero es mucho más fácil aprender cuando ya tienes un marco de trabajo de código, y es mucho más simple hacerlo funcionar en DX9.

Una vez que tenga ese funcionamiento, aprenda DX11. Tendrás que cambiar las bibliotecas matemáticas. Tendrás que inventar tus propios modelos de modelos y cargadores. Tendrás que inventar tu propio framework de efectos o usar el de ejemplo, pero ahora son mucho más fáciles ya que ya conoces los conceptos básicos de 3d y la programación de sombreadores.

+0

La razón principal por la que DX9 parece ser "más simple" es que puede aprovechar la infraestructura heredada de funciones fijas para realizar renderizaciones básicas sin tener que aprender HLSL inmediatamente, pero tendrá que desaprender eso inmediatamente para aprender la GPU "moderna" programación. Es mejor simplemente usar DX11 y el [Kit de herramientas de DirectX] (http://go.microsoft.com/fwlink/?LinkId=248929), que le ofrece una gran cantidad de código de inicio, incluidos sombreadores 'en stock'. –

3

TBH además del comentario de OneOfOne si sabes cómo hacer un desarrollo en 3D en GL, D3D9, D3D10 o D3D11 entonces puedes transferir esas habilidades a cualquiera de las otras con un poco de trabajo.

Personalmente apuntaría a D3D11 de esa manera usted está aprendiendo lo último. Descubrirás que podrás hacer GL, D3D9 o D3D10 con un poco de trabajo. Haga suficiente trabajo en la teoría y descubrirá que no es tan difícil transferir las habilidades a un motor completamente de software.

+1

Coincidir con la versión correcta de DirectX en el currículum sería importante solo para los monos de código de nivel de entrada. –

+0

TBH Empecé a hacer desarrollo de PS2 porque el motor DX7/8 que escribí era bueno.Mi TD estaba impresionado y en los años siguientes, un colega y yo escribimos, posiblemente, uno de los motores de PS2 más avanzados. Es una pena que fue tan mal utilizado :( – Goz

+0

que suena bien. Pero D3D11 absolutamente no tiene recursos de ningún editor. Mi camino para entender DX sería más difícil. – numerical25

2

Si su intención es aprender una habilidad que usaría en la industria de los juegos, quédese con DirectX 9. Como DirectX 10 y 11 requieren Vista o Windows 7, los desarrolladores de juegos aún no los están siguiendo y apuntan a DirectX 9 para tener soporte para Windows XP.

Dicho esto, en realidad no importa con qué empezar. Las diferencias no son tan grandes. Si comprende los conceptos detrás de las API 3D y cómo funciona la interconexión de la GPU, puede elegir cualquiera de los tres o incluso OpenGL con el mínimo esfuerzo.

+1

Tiendo a estar en desacuerdo. Si captó D3D11, puede manejar D3D9 con facilidad. No es una buena idea comenzar con una API próxima a ser obsoleta que también tiene demasiadas funciones heredadas (funciones fijas) que deberían ignorarse. Eso es simplemente confuso para el principiante. –

+1

Las únicas partes "obsoletas" de la API dx9 son temas avanzados en los que un principiante nunca accedería. Estoy de acuerdo en que sería una mala idea perder el tiempo aprendiendo las complejidades de los estados de muestra de textura y el mapeo de funciones fijas o el mapeo de cubos, pero el 90% de los mapas de dx9 directamente a dx11. La API se ha limpiado un poco, pero las cosas funcionan más o menos de la misma manera. Los principales pasos para que un principiante aprenda en 3D, transformación de geometría, z-buffering, alfa-blending, etc., son prácticamente independientes de API. Simplemente mantente con la representación orientada al sombreado para obtener más cosas avanzadas en dx9. – Alan

+4

He usado D3D desde la versión 7 y D3D10 y 11 le dan una mejor visión de lo que está sucediendo realmente en las GPU que las anteriores. La curva de aprendizaje puede ser más pronunciada, pero después de comprender los conceptos, debe saber exactamente qué está pasando. Con D3D9, por otro lado, tienes la función fija y muchas otras cosas heredadas que, en mi opinión, solo distraen. Mejor aprenderlo de la "manera correcta" desde el principio. –

1

El hecho es que necesita aprender ambos.

As long as 50% of gamers are still on WinXP, tendrá que poder programar en Direct3D9.

D3D9 no es más fácil comenzar con que D3D10/11. Son los mismos principios, con los vértices que se colocarán, las normales que se calcularán y las mallas que se representarán. Si está creando una estructura ID3D11BlendState o llamando al IDirect3DDevice9::SetRenderState(), es el mismo concepto, solo formas diferentes de hacerlo.

Después de trabajar con d3d11 un par de días, he llegado a pensar que es mejor que DX9 de muchas maneras.Por un lado, puede usar las tapas completas de la GPU, incluidos los sombreadores de geometría. En segundo lugar, le obliga a comprender completamente la línea de gráficos para dibujar cualquier cosa (observe cómo se nombran las funciones después de la etapa de la tubería que afectan: here: (IA* fcns: etapa input-assembler, OM* fcns: etapa de salida-fusión, etc.)) Esto puede dar como resultado una curva inicial INICIAL un poco más grande, pero una vez que la obtiene, no es más difícil que D3D9 y es mejor, ya que el nombre mismo de las funciones ayuda a los conceptos a mantenerse.

Así que ponerse en marcha en ambos, y ellos aprender en conjunto puede ayudar a reducir la cantidad de esfuerzo que gasta el aprendizaje/métodos de API en desuso de hacer las cosas de DX9 (es decir, que realmente quiere pasar más tiempo usando shaders, y don no utilice demasiado la sección de la función fija de DX9).

+0

downvoter, explique su razón O SU DOWNVOTE SERÁ RETIRADO !! – bobobobo

+0

En general, la única razón por la que usaría DX9 es apuntar a Windows XP, en cuyo caso también necesitará usar herramientas de desarrollador heredadas, SDK heredados, bibliotecas de soporte heredado y middleware, y apuntar a máquinas extremadamente antiguas/de bajo nivel desde principalmente existen en China, Corea del Sur y Rusia. Si está haciendo algo más, ahórrese mucho esfuerzo y concéntrese en DirectX 11. Si apunta a la audiencia de [Steam] (http://store.steampowered.com/hwsurvey/), no es obvio que Windows XP es menor que% 5. –

0

Puede consultar los libros de Luna para DX9/DX11 (le sugiero que comience con 11). Puede consultar http://www.rastertek.com/tutdx11.html pero no explica todo para que pueda consultar el libro de Luna y ver qué ocurre con esas funciones o propiedades

0

Con algunas pequeñas excepciones, DX10 es solo un DX9 sin legado. Por ejemplo, DX9 tenía opciones integradas para renderizar Flatshaded, Textured o usar Shader. En DX10 estas opciones se han ido, siempre tienes que usar un sombreador real. Si desea hacer un sombreado horizontal, escriba un sombreador HLSL que sombree plano.

Así que le sugiero que aprenda DX10 (o DX11). Podrá adoptar rápidamente a DX9 pero con un estilo de codificación más moderno al no usar funciones heredadas. Pueden ser confusos, así que DX10 te enfocará en cosas relevantes.

Si eres un verdadero principiante, y configurar un vertex-buffer para crear un solo triángulo es confuso (como real 3D-Programmer ya no estás interesado en triángulos simples), incluso te sugiero que comiences con OpenGL. Tendrás un éxito más rápido, pero en realidad esto puede distraer un poco como DX9-Legacy si quieres enfocarte en la codificación 3D moderna.

0

Sí, no pierdas tu tiempo con DX10 nunca fue realmente adoptado como el estándar de la industria por un período de tiempo, no hubo cambios lo suficientemente grandes como para garantizar que las personas actualicen desde DX9 pero para DX11.

0

Sugiero directx 11, no hay ninguna razón en mi opinión para perder tiempo en funciones o técnicas en desuso. Aprender los sombreadores desde el principio hará las cosas mucho más claras

-1

Intenta hacer las muestras de la carpeta de muestra de 9 y 10, y si tu computadora puede soportarlo, 11. Esto es lo que estoy haciendo.