Apakah Windows 8 masih mendukung DirectX 9?


9

Apakah Windows 8 mendukung DirectX 9? Karena saya sedang melihat beberapa sampel yang ditulis dalam C ++ dan DirectX 9 dibuat untuk Windows 8. Bukan itu, seperti yang saya tahu (lihat di sini http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2 ). Misalnya Inizialising DirectX dengan COM:

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

Ini aneh karena saya tahu itu dengan cara lama:

ID3D11Device *dev;                  
ID3D11DeviceContext *devcon;  

(Saya harap Anda mengerti apa yang ingin saya sampaikan)

Saya harap itu tidak berubah sepenuhnya karena merilis OS baru mereka.


1
Saya merasa sangat sulit untuk membayangkan bahwa microsoft tiba-tiba akan kehilangan dukungan untuk + 90% dari semua game di platform windows. Saya juga merasa lebih sulit untuk percaya bahwa orang tidak akan marah dengan tindakan seperti itu sekarang.
Jari Komppa

Karena itu, mungkin saja SDK terbaru tidak menyertakan header / pustaka dx9; Saya belum memeriksa. Itu tidak berarti bahwa Anda tidak bisa hanya menggunakan dx9 SDK seperti sebelumnya. Kecuali, tentu saja, studio visual terbaru entah bagaimana melarang Anda melakukannya, tetapi itu akan konyol.
Jari Komppa

Yah, saya tidak bisa percaya juga, tapi saya pikir itu mungkin karena untuk mendapatkan "Windows 8" -merek PC yang paling memiliki layar sentuh dan apakah Anda pernah melihat permainan yang ditulis dalam DirectX yang mendukung game dengan Touchscreen?
LaVolpe

Saya cukup yakin Anda tidak akan dapat membuat aplikasi "ui modern" dengan dx9.
Jari Komppa

1
Objek D3D selalu menjadi objek COM - tidak menggunakan pointer mentah tetapi menempatkannya dalam pointer COM pintar selalu dimungkinkan.

Jawaban:


12

Ya , Windows 8 mendukung DirectX 9.

Untuk pengembangan, DirectX SDK lama sekarang sudah usang , tetapi Anda akan memiliki semua perpustakaan dan header yang Anda butuhkan dalam Windows 8 SDK baru, yang disertakan dengan Visual Studio 2012. Anda dapat menggunakan "cara lama" tanpa masalah . Jika Anda membutuhkan PIX untuk debugging, atau pustaka D3DX tingkat tinggi, Anda harus menginstal DXSDK lama lagi, karena ini bukan di Windows 8 SDK.

Namun ini hanya berlaku untuk aplikasi desktop lama biasa. Untuk aplikasi bergaya Metro, saya akan membiarkan Chuck Walbourn dari Microsoft berbicara :

Direct3D9 dan Direct3D9Ex tidak didukung untuk aplikasi gaya Metro. Penggunaan DirectX SDK dengan aplikasi gaya Metro tidak disarankan atau didukung. Lihat http://msdn.microsoft.com/en-us/library/ee663275.aspx .

Ada sejumlah sumber daya yang tersedia untuk membantu Anda dalam porting basis kode Direct3D 9 ke Direct3D 11. Mayoritas materi untuk porting dari Direct3D 9 ke Direct3D 10.x berlaku sepenuhnya di sini karena API Direct3D 11 sangat mirip dengan Direct3D 10.

Lihat http://blogs.msdn.com/b/chuckw/archive/2011/07/11/getting-started-with-direct3d-11.aspx . Pastikan untuk meninjau Windows menjadi Realita: Mendapatkan yang Terbanyak dari Grafis Direct3D 10 dalam presentasi Game Anda karena mencakup banyak jebakan dan masalah kinerja yang telah dipukul pengembang di masa lalu, dan Pembaruan Teknologi DirectX 11 untuk ringkasan perbedaan antara Direct3D 10 .x dan Direct3D 11.

MSDN memiliki panduan porting juga http://msdn.microsoft.com/en-us/library/ff476190.aspx yang mengarahkan Anda ke http://msdn.microsoft.com/en-us/library/bb205073.aspx untuk langsung dari Direct3D 9 ke Direct3D 11.

Maaf, Anda tidak dapat menggunakan D3D9 secara langsung untuk aplikasi bergaya Metro. Tetapi Anda dapat menggunakan D3D11 dan membatasi diri Anda pada tingkat fitur tertentu (misalnya D3D_FEATURE_LEVEL_9_3) jika Anda ingin mendukung perangkat keras sebelumnya.


Wow, terima kasih atas jawaban Anda. Seperti yang saya lihat, Anda melakukan riset hebat
LaVolpe

Ya, tidak juga, kebetulan saya sedang mengerjakannya sekarang;)
Laurent Couvidou

1
AFAIK win8 SDK yang datang dengan VS 2012 tidak lagi mengirimkan header D3D11X * - hanya D3D11 *. Ini membuat Anda tanpa sejumlah fungsi utilitas, seperti memuat shader dari file dan mengkompilasinya dalam satu panggilan fungsi.

Memang. Apa yang dikatakan Microsoft tentang itu: "Sadarilah bahwa teknologi pengganti untuk penggunaan D3DX11 saat ini termasuk DirectXTex dan DirectXTK. D3DXMath digantikan oleh DirectXMath." Belum diuji sejauh ini.
Laurent Couvidou

3

Windows 8 memiliki dukungan dasar yang sama untuk aplikasi Direct3D 9 seperti pada Windows 7 dan Windows Vista. Direct3D 9 adalah warisan dan pasti ada beberapa masalah compat yang berpotensi berdampak pada game berbasis Direct3D 9, tetapi mereka lebih atau kurang berfungsi seperti yang mereka lakukan pada Windows 7.

Pengembangan dengan Direct3D 9 pada Windows 8 sedikit lebih menantang daripada pada Windows 7. Header Direct3D 9 standar adalah bagian dari Windows 8.0 SDK (termasuk dengan VS 2012), tetapi itu tidak termasuk D3DX9. Direct3D 9 Debug Runtime tidak didukung pada Windows 8. Anda dapat menggunakan SDX DirectX lama pada Windows 8, tetapi ada sejumlah tantangan untuk menginstal dan membatasi.

API yang direkomendasikan untuk digunakan untuk menulis aplikasi baru pada Windows 7 dan Windows 8 adalah Direct3D 11. Ini berfungsi untuk aplikasi desktop Win32 dan aplikasi Windows Store. Selain itu, Anda disarankan untuk menggunakan Windows 8.x SDK dan tidak menggunakan DirectX SDK.

Lihat Games untuk Windows dan DirectX SDK untuk banyak posting tentang topik ini.


Perhatikan bahwa Anda tidak "menginstal DirectX" pada versi Windows yang lebih baru dari Windows XP Paket Layanan 1. Paket "DirectX End-User Runtime" akan diinstal pada Windows XP SP2, Windows Vista, Windows 7, dan Windows 8.x tetapi itu tidak pernah menginstal "DirectX". Itu hanya menyebarkan beberapa DLL pembantu yang merupakan bit opsional dari DirectX SDK yang sekarang menjadi legacy: XINPUT 1.3, XAudio 2.7, D3DX, dll. Direct3D, DirectInput, DirectSound, dll. Hanya diperbarui sebagai bagian dari Paket Layanan resmi atau rilis Pembaruan Windows. tautan
Chuck Walbourn

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.