¿Hay alguna ventaja en usar DX10 / 11 para un juego 2D?

10

No estoy completamente familiarizado con el conjunto de características introducido por el hardware de clase DX10 / 11. Estoy vagamente familiarizado con las nuevas etapas agregadas a la tubería de gráficos programables, como el sombreador de geometría, el sombreador de cómputo y las nuevas etapas de teselación. Sin embargo, no veo cómo ninguno de estos hace una gran diferencia para un juego 2D.

¿Hay alguna razón convincente para hacer el cambio a DX10 / 11 (o los equivalentes de OpenGL) para un juego 2D, o sería más prudente seguir con DX9 teniendo en cuenta que una parte significativa del mercado todavía funciona con tecnologías más antiguas (por ejemplo, el Febrero de 2012 Las encuestas de Steam enumeran alrededor del 17% de los usuarios que todavía usan Windows XP).

David Gouveia
fuente

Respuestas:

5

Depende de lo que estés haciendo. Si está utilizando Direct3D, la única razón para cambiar es obtener acceso a las funciones de hardware que de otro modo no podría obtener.

Para un juego en 2D, es teóricamente posible que ciertas características puedan interesarle. Por ejemplo, OpenCL o DirectCompute. Civilization V obtiene algún uso de DirectCompute para descomprimir texturas. Esto reduce drásticamente el tiempo de carga, ya que solo tiene que cargar datos comprimidos. Y los juegos 2D a menudo tienen muchas imágenes. Si el tiempo de carga es un problema, esto podría ayudar.

OpneCL debería estar disponible en todo el hardware GeForce 8xxx y superior. En ATI, está disponible en HD 4xxx y mejor hardware.

Diría que la característica más importante que puede usar en DX11 es la capacidad de leer y escribir imágenes de forma más arbitraria en sombreadores. Eso podría ser útil para ciertos efectos especializados. No puedo pensar en ninguna en este momento ... que debería decirle qué tan probable es que esto sea importante.

En general, diría que si estás usando D3D, probablemente no ganarás mucho. Y si aún no comprende cuáles son las nuevas funciones y desea utilizarlas en su juego, seguramente no ganará mucho. La mayoría de ellos serán más complejos.

OpenGL es diferente por una razón importante. OpenGL 2.1 (el equivalente más o menos a D3D9) apesta como API. OpenGL 3.3 (más algunas extensiones más recientes que se ejecutan en hardware 3.3) mejora mucho la API. Ubicación explícita de atributos, separación de programas de sombreado, todo en el paquete de idioma de sombreado 420 , etc.

Algunos de estos funcionan lo suficientemente bien en forma de extensión contra 2.1. Algunos de ellos ... no lo hacen. Todavía no estoy seguro de si está bien usar ubicaciones de atributos explícitas con attributedeclaraciones (antes de la insintaxis actual ). El paquete de idioma de sombreado 420 dice específicamente que no funciona con versiones GLSL anteriores a 1.30 (también conocido como: OpenGL 3.0).

Eso no quiere decir que GL 2.1 sea inutilizable. Ciertamente es funcional y útil, simplemente no es agradable. Aunque algunos controladores que encontrará que lo implementan no son reparables. El hardware DX9 de ATI ya no es compatible, por lo que esos controladores son realmente defectuosos. E Intel nunca se preocupó por OpenGL, por lo que usar sombreadores en su hardware es una suerte.

Pero personalmente, si su base de usuarios prevista lo permite, me inclinaría a GL 3.3 si está utilizando OpenGL. Si no, solo tendrá que lidiar con los problemas 2.1.

Nicol Bolas
fuente
5

Hay algunas cosas que creo que deberías considerar:

  • Si tiene un motor D3D9 bien probado, probablemente no valga la pena transferirlo a D3D11, si no va a utilizar las nuevas funciones. Al comenzar desde cero, D3D11 es mucho más tentador.

  • ¿Qué tan pronto será la fecha de lanzamiento de tu juego? XP estará fuera de soporte en poco más de dos años, y si observa los datos históricos de que la base de instalación de XP está cayendo bastante rápido (~ 1% / mes en Steam).

  • Considere qué proporción del 17% de los usuarios de XP tendría una PC que cumpla con las especificaciones mínimas para su juego bajo D3D9. Cuanto más alto sea, más vale la pena apoyarlos.

  • DX10 no tiene sentido utilizarlo para nuevos desarrollos. DX11 se ejecuta en los mismos sistemas operativos y hardware (a través de niveles de funciones).

  • DX11 admite un procesador de software (WARP) como dispositivo alternativo, que puede ser lo suficientemente rápido como para ejecutar un juego con bajos requisitos de GPU.

  • Native DX9 admite más funciones que D3D11 cuando usa cualquiera de los niveles de funciones de D3D9. Afortunadamente, el hardware DX9 en PC con capacidad DX10 es raro.

  • El hardware DX10 / 11 tiene capacidades mucho menos variadas, por lo tanto, si hace que el hardware DX9 use WARP, no necesita preocuparse por las limitaciones incómodas con cosas como texturas sin potencia de dos o mapeo incómodo de texel-pixel .

  • Si su juego va a ser intensivo en hardware, DX11 tiene algunos trucos adicionales disponibles para aumentar el rendimiento. Subprocesamiento múltiple del código de dibujo, por ejemplo.

Adán
fuente
Estoy un poco confundido acerca de los niveles de características. Si desarrollo usando DX11 pero apuntando a un nivel de característica DX9, entiendo que se ejecutará en hardware DX9. Pero, ¿seguirá requiriendo el tiempo de ejecución DX11, es decir, se ejecutará en Windows XP?
David Gouveia
DX11 no funciona en XP en absoluto. Lo que hacen los niveles de funciones es permitirle usar la API DX11 con hardware más antiguo. Consulte msdn.microsoft.com/en-us/library/ff476876%28v=vs.85%29.aspx para obtener detalles sobre lo que le permite hacer cada nivel de función.
Adam
1

Los sombreadores de geometría por sí solos son una razón para usar D3D10 / 11, si planea tener una gran cantidad de partículas o sprites.

DirectCompute también se puede usar para obtener buenos beneficios de velocidad.

Personalmente, simplemente tener la API mucho más limpia y agradable de D3D10 / 11 es razón suficiente para no volver a tocar D3D9 u OpenGL nuevamente para cualquier proyecto moderno solo para Windows. Sin embargo, de manera realista, la necesidad de apuntar a dispositivos móviles con GL | ES y la multitud aún considerable de WinXP requiere evitar D3D10 / 11 y adherirse a D3D9 u OpenGL.

Tenga en cuenta que seguir la ruta OpenGL le permite obtener sombreadores de geometría, OpenCL y otras características de hardware más recientes, incluso en WinXP.

Sean Middleditch
fuente