¿Windows 8 aún admite DirectX 9?


9

¿Windows 8 es compatible con DirectX 9? Porque estaba mirando algunos ejemplos escritos en C ++ y DirectX 9 hechos para Windows 8. No fue eso, como lo sé (mira aquí http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2 ) Ej. Inizializar DirectX con COM:

ComPtr<ID3D11Device1> dev;
ComPtr<ID3D11DeviceContext1> devcon;

Es extraño porque lo sé a la antigua usanza:

ID3D11Device *dev;                  
ID3D11DeviceContext *devcon;  

(Espero que entiendas lo que quiero decirte)

Espero que no haya cambiado completamente debido al lanzamiento de su nuevo sistema operativo.


1
Me resultaría muy difícil imaginar que Microsoft de repente dejaría de admitir más del 90% de todos los juegos en la plataforma de Windows. También me resulta aún más difícil creer que la gente no se enfurecería con tal movimiento por ahora.
Jari Komppa

Dicho esto, es posible que los últimos SDK no incluyan encabezados / bibliotecas dx9; No lo he comprobado. Eso no significa que no puedas usar el dx9 sdk como antes. A menos que, por supuesto, el último estudio visual de alguna manera te prohíba hacerlo, pero eso sería una tontería.
Jari Komppa

Bueno, no puedo creerlo también, pero creo que es posible porque obtener la marca "Windows 8", la PC más tiene una pantalla táctil y ¿alguna vez viste un juego escrito en DirectX que sea compatible con juegos con pantalla táctil?
LaVolpe

Sin embargo, estoy bastante seguro de que no podrá crear aplicaciones de "interfaz de usuario moderna" con dx9.
Jari Komppa

1
Los objetos D3D siempre han sido objetos COM, no utilizando punteros sin formato, sino que siempre ha sido posible colocarlos en un puntero COM inteligente.

Respuestas:


12

, Windows 8 admite DirectX 9.

Para el desarrollo, el antiguo SDK de DirectX ahora está en desuso , pero tendrá todas las bibliotecas y encabezados que necesita dentro del nuevo SDK de Windows 8, que viene incluido con Visual Studio 2012. Puede seguir la "vieja forma" sin problemas . Si necesita PIX para alguna depuración, o la biblioteca D3DX de alto nivel, deberá instalar el antiguo DXSDK nuevamente, ya que esto no está en el SDK de Windows 8.

Sin embargo, esto solo es válido para aplicaciones de escritorio antiguas. Para las aplicaciones estilo Metro, dejaré que Chuck Walbourn de Microsoft hable :

Direct3D9 y Direct3D9Ex no son compatibles con las aplicaciones de estilo Metro. No se recomienda ni admite el uso del SDK de DirectX con aplicaciones de estilo Metro. Ver http://msdn.microsoft.com/en-us/library/ee663275.aspx .

Hay varios recursos disponibles para ayudarlo a portar una base de código de Direct3D 9 a Direct3D 11. La mayor parte del material para portar de Direct3D 9 a Direct3D 10.x se aplica completamente aquí ya que la API de Direct3D 11 es muy similar a Direct3D 10.

Ver http://blogs.msdn.com/b/chuckw/archive/2011/07/11/getting-started-with-direct3d-11.aspx . Asegúrese de revisar Windows to Reality: Cómo aprovechar al máximo los gráficos Direct3D 10 en la presentación de sus juegos, ya que cubre numerosas dificultades y problemas de rendimiento que los desarrolladores han enfrentado en el pasado, y la Actualización de tecnología DirectX 11 para obtener un resumen de las diferencias entre Direct3D 10 .xy Direct3D 11.

MSDN también tiene una guía de portabilidad http://msdn.microsoft.com/en-us/library/ff476190.aspx que le señala a http://msdn.microsoft.com/en-us/library/bb205073.aspx para yendo directamente de Direct3D 9 a Direct3D 11.

Lo sentimos, no puedes usar D3D9 directamente para aplicaciones de estilo Metro. Pero puede usar D3D11 y limitarse a algún nivel de función (por ejemplo D3D_FEATURE_LEVEL_9_3) si desea admitir hardware heredado.


Wow, gracias por tu respuesta. Como veo, hiciste una gran investigación
LaVolpe

Bueno, en realidad no, solo estoy trabajando en eso ahora;)
Laurent Couvidou

1
AFAIK, el SDK win8 que viene con VS 2012 ya no incluye encabezados D3D11X *, solo D3D11 *. Esto lo deja sin una serie de funciones de utilidad, como cargar sombreadores desde un archivo y compilarlos en una llamada de función.

En efecto. Lo que Microsoft dice sobre eso: "Tenga en cuenta que las tecnologías de reemplazo para los usos actuales de D3DX11 incluyen DirectXTex y DirectXTK. D3DXMath es reemplazado por DirectXMath". No probado hasta ahora.
Laurent Couvidou

3

Windows 8 tiene el mismo soporte básico para aplicaciones Direct3D 9 que estaba presente en Windows 7 y Windows Vista. Direct3D 9 es heredado y definitivamente hay algunos problemas de compatibilidad que pueden afectar los juegos basados ​​en Direct3D 9, pero funcionan más o menos tan bien como en Windows 7.

El desarrollo con Direct3D 9 en Windows 8 es un poco más desafiante que en Windows 7. Los encabezados estándar de Direct3D 9 son parte del SDK de Windows 8.0 (incluido con VS 2012), pero eso no incluye D3DX9. Direct3D 9 Debug Runtime no es compatible con Windows 8. Puede usar el SDK de DirectX heredado en Windows 8, pero existen varios desafíos para instalarlo y limitaciones.

La API recomendada para escribir nuevas aplicaciones en Windows 7 y Windows 8 es Direct3D 11. Esto funciona tanto para las aplicaciones de escritorio Win32 como para las aplicaciones de la Tienda Windows. Además, se recomienda que utilice el SDK de Windows 8.x y no utilice el SDK de DirectX.

Vea Juegos para Windows y DirectX SDK para ver muchas publicaciones sobre este mismo tema.


Tenga en cuenta que no "instala DirectX" en ninguna versión de Windows más reciente que Windows XP Service Pack 1. El paquete "DirectX End-User Runtime" se instalará en Windows XP SP2, Windows Vista, Windows 7 y Windows 8.x pero que nunca se instala "DirectX". Simplemente implementa algunas DLL auxiliares que son bits opcionales del SDK de DirectX ahora heredado: XINPUT 1.3, XAudio 2.7, D3DX, etc. Direct3D, DirectInput, DirectSound, etc. solo se actualizan como parte de Service Packs oficiales o versiones de Windows Update. enlace
Chuck Walbourn

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.