Windows 8 supporta ancora DirectX 9?


9

Windows 8 supporta DirectX 9? Perché stavo guardando alcuni esempi scritti in C ++ e DirectX 9 realizzati per Windows 8. Non era quello, come lo so (guarda qui http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2 ). Ad esempio Inizializzazione di DirectX con COM:

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

È strano perché lo conosco alla vecchia maniera:

ID3D11Device *dev;                  
ID3D11DeviceContext *devcon;  

(Spero che tu capisca cosa voglio dire)

Spero che non sia cambiato completamente a causa del rilascio del loro nuovo sistema operativo.


1
Troverei molto difficile immaginare che Microsoft abbandonerebbe improvvisamente il supporto per il 90% + di tutti i giochi sulla piattaforma Windows. Trovo anche ancora più difficile credere che le persone non sarebbero infuriate da una tale mossa ormai.
Jari Komppa,

Detto questo, è possibile che gli ultimi SDK non includano le intestazioni / librerie dx9; Non ho controllato Ciò non significa che non si possa semplicemente usare il dx9 sdk come prima. A meno che, naturalmente, l'ultimo studio visivo non ti impedisca in qualche modo di farlo, ma sarebbe sciocco.
Jari Komppa,

Beh, non ci posso credere, ma penso che sia possibile perché per ottenere il marchio "Windows 8" il PC ha più un touchscreen e hai mai visto un gioco scritto in DirectX che supporta i giochi con Touchscreen?
LaVolpe,

Sono abbastanza sicuro che non sarai in grado di creare app "moderne" con dx9.
Jari Komppa,

1
Gli oggetti D3D sono sempre stati oggetti COM - non usando puntatori non elaborati ma inserendoli in un puntatore COM intelligente è sempre stato possibile.

Risposte:


12

, Windows 8 supporta DirectX 9.

Per lo sviluppo, il vecchio SDK DirectX è ora obsoleto , ma avrai tutte le librerie e le intestazioni necessarie nel nuovo SDK di Windows 8, incluso in Visual Studio 2012. Puoi andare alla "vecchia maniera" senza problemi . Se hai bisogno di PIX per il debug o la libreria D3DX di alto livello, dovrai installare di nuovo il vecchio DXSDK, poiché non si trova nell'SDK di Windows 8.

Tuttavia, questo è valido solo per le vecchie app desktop semplici. Per le app in stile Metro, lascerò parlare Chuck Walbourn di Microsoft :

Direct3D9 e Direct3D9Ex non sono supportati per le applicazioni in stile Metro. L'uso di DirectX SDK con applicazioni in stile Metro non è raccomandato o supportato. Vedi http://msdn.microsoft.com/en-us/library/ee663275.aspx .

Esistono diverse risorse disponibili per aiutarti a trasferire una base di codice da Direct3D 9 a Direct3D 11. La maggior parte del materiale per il porting da Direct3D 9 a Direct3D 10.x si applica completamente qui poiché l'API di Direct3D 11 è molto simile a Direct3D 10.

Vedi http://blogs.msdn.com/b/chuckw/archive/2011/07/11/getting-started-with-direct3d-11.aspx . Assicurati di rivedere Windows to Reality: ottenere il massimo dalla grafica di Direct3D 10 nella presentazione dei tuoi giochi in quanto copre numerose insidie ​​e problemi di prestazioni che gli sviluppatori hanno riscontrato in passato e Aggiornamento tecnologico DirectX 11 per un riepilogo delle differenze tra Direct3D 10 .xe Direct3D 11.

MSDN ha anche una guida al porting http://msdn.microsoft.com/en-us/library/ff476190.aspx che rimanda a http://msdn.microsoft.com/en-us/library/bb205073.aspx per passando direttamente da Direct3D 9 a Direct3D 11.

Spiacenti, non puoi utilizzare D3D9 direttamente per le app in stile Metro. Ma puoi usare D3D11 e limitarti a qualche livello di funzionalità (ad es. D3D_FEATURE_LEVEL_9_3) Se vuoi supportare hardware legacy.


Wow, grazie per la tua risposta. Come vedo, hai fatto una grande ricerca
LaVolpe,

Beh, non proprio, ci sto solo lavorando proprio adesso;)
Laurent Couvidou,

1
AFAIK l'SDK win8 fornito con VS 2012 non spedisce più le intestazioni D3D11X *, ma solo D3D11 *. Questo ti lascia senza una serie di funzioni di utilità, come caricare shader da un file e compilarli in una chiamata di funzione.

Infatti. Cosa dice Microsoft a riguardo: "Tenere presente che le tecnologie di sostituzione per gli attuali usi di D3DX11 includono DirectXTex e DirectXTK. D3DXMath è sostituito da DirectXMath." Non testato finora.
Laurent Couvidou,

3

Windows 8 ha lo stesso supporto di base per le applicazioni Direct3D 9 come era presente in Windows 7 e Windows Vista. Direct3D 9 è legacy e ci sono sicuramente alcuni problemi di compatibilità che possono potenzialmente influire sui giochi basati su Direct3D 9, ma funzionano più o meno come su Windows 7.

Lo sviluppo con Direct3D 9 su Windows 8 è un po 'più impegnativo rispetto a Windows 7. Le intestazioni standard di Direct3D 9 fanno parte dell'SDK di Windows 8.0 (incluso con VS 2012), ma questo non include D3DX9. Il runtime di debug di Direct3D 9 non è supportato su Windows 8. È possibile utilizzare l'SDK DirectX legacy su Windows 8, ma ci sono una serie di difficoltà a installarlo e limitazioni.

L'API consigliata da utilizzare per scrivere nuove applicazioni su Windows 7 e Windows 8 è Direct3D 11. Funziona sia con le applicazioni desktop Win32 che con le app di Windows Store. Inoltre, si consiglia di utilizzare l'SDK di Windows 8.xe di non utilizzare l'SDK di DirectX.

Vedi Games for Windows e DirectX SDK per molti post su questo argomento.


Si noti che non si "installa DirectX" su nessuna versione di Windows più recente di Windows XP Service Pack 1. Il pacchetto "DirectX End-User Runtime" verrà installato su Windows XP SP2, Windows Vista, Windows 7 e Windows 8.x ma esso non installa "DirectX". Distribuisce solo alcune DLL di supporto che sono bit facoltativi dell'ormai ormai obsoleto SDK DirectX: XINPUT 1.3, XAudio 2.7, D3DX, ecc. Direct3D, DirectInput, DirectSound, ecc. Vengono sempre aggiornati solo nell'ambito dei Service Pack ufficiali o delle versioni di Windows Update. link
Chuck Walbourn,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.