Windows 8 hala DirectX 9'u destekliyor mu?


9

Windows 8 DirectX 9'u destekliyor mu? Ben Windows 8 için yapılmış C ++ ve DirectX 9 ile yazılmış bazı örnekler üzerinden bakıyordu çünkü burada (göz bildiğimiz gibi değil, o http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2 ). COM ile DirectX'i Inizialising:

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

Sadece garip çünkü eski yöntemle biliyorum:

ID3D11Device *dev;                  
ID3D11DeviceContext *devcon;  

(Umarım ne söylemek istediğimi anlarsın)

Umarım yeni işletim sistemlerini piyasaya sürdüğü için tamamen değişmez.


1
Microsoft'un aniden Windows platformundaki tüm oyunların% 90'ı için destek bırakacağını hayal etmek çok zor olurdu. Ayrıca insanların şimdiye kadar böyle bir hamleyle öfkelenmeyeceğine inanmak daha da zor.
Jari Komppa

Bununla birlikte, en son SDK'ların dx9 üstbilgileri / kitaplıkları içermemesi mümkündür; Kontrol etmedim. Bu, dx9 sdk'yi daha önce olduğu gibi kullanamayacağınız anlamına gelmez. Tabii ki, en son görsel stüdyo bir şekilde bunu yapmanıza izin vermiyorsa, ancak bu aptalca olurdu.
Jari Komppa

Eh, ben de inanamıyorum, ama bence mümkün "Windows 8" -ve PC en dokunmatik ekran var ve hiç Dokunmatik Ekran ile oyun destekleyen DirectX yazılmış bir oyun gördün mü?
LaVolpe

Yine de dx9 ile "modern ui" uygulamaları yapamayacağınızdan eminim.
Jari Komppa

1
D3D nesneleri her zaman COM nesneleri olmuştur - ham işaretçiler kullanmamakta, bunun yerine akıllı bir COM işaretçisine yerleştirmek her zaman mümkün olmuştur.

Yanıtlar:


12

Evet , Windows 8 DirectX 9'u destekliyor.

Geliştirme için, eski DirectX SDK artık kullanımdan kaldırıldı , ancak Visual Studio 2012 ile gelen yeni Windows 8 SDK'sında ihtiyacınız olan tüm kitaplıklara ve başlıklara sahip olacaksınız. Sorun olmadan "eski yol" a gidebilirsiniz . Bazı hata ayıklama veya yüksek düzey D3DX kitaplığı için PIX'e ihtiyacınız varsa , Windows 8 SDK'da olmadığı için eski DXSDK'yı tekrar yüklemeniz gerekir .

Ancak bu yalnızca düz eski masaüstü uygulamaları için geçerlidir. Metro tarzı uygulamalar için Microsoft'tan Chuck Walbourn'un konuşmasına izin vereceğim :

Direct3D9 ve Direct3D9Ex, Metro stili uygulamalar için desteklenmez. DirectX SDK'nın Metro tarzı uygulamalarla kullanılması önerilmez veya desteklenmez. Bkz. Http://msdn.microsoft.com/en-us/library/ee663275.aspx .

Direct3D 9 kod tabanını Direct3D 11'e taşımada size yardımcı olacak bir dizi kaynak vardır. Direct3D 9'dan Direct3D 10.x'e taşıma malzemesinin büyük kısmı Direct3D 11'in API'si Direct3D 10'a çok benzer olduğu için burada tam olarak geçerlidir.

Bkz. Http://blogs.msdn.com/b/chuckw/archive/2011/07/11/getting-started-with-direct3d-11.aspx . Windows'u Gerçeğe Doğru: Oyunlarınızda Direct3D 10 Grafiklerinden En İyi Şekilde Yararlanmak için, geliştiricilerin geçmişte karşılaştığı çok sayıda tuzak ve performans sorununu ve Direct3D 10 arasındaki farkların bir özeti için DirectX 11 Teknoloji Güncellemesini incelediğinizden emin olun. .x ve Direct3D 11.

MSDN yanı bir taşıma kılavuzu vardır http://msdn.microsoft.com/en-us/library/ff476190.aspx edinebileceğiniz hangi http://msdn.microsoft.com/en-us/library/bb205073.aspx için doğrudan Direct3D 9'dan Direct3D 11'e gidiyor.

Maalesef, D3D9'u doğrudan Metro tarzı uygulamalar için kullanamazsınız. Ancak, D3D_FEATURE_LEVEL_9_3eski donanımı desteklemek istiyorsanız D3D11'i kullanabilir ve kendinizi bazı özellik düzeyleriyle (örn. ) Sınırlandırabilirsiniz .


Vay, cevabın için teşekkürler. Gördüğüm gibi harika bir araştırma yaptınız
LaVolpe

Aslında değil, şu anda üzerinde çalışıyorum;)
Laurent Couvidou

1
AFAIK, VS 2012 ile birlikte gelen win8 SDK'sı artık herhangi bir D3D11X * başlığı göndermiyor - sadece D3D11 *. Bu, gölgelendiricileri bir dosyadan yüklemek ve bunları bir işlev çağrısında derlemek gibi bir dizi yardımcı program işlevi olmadan bırakır.

Aslında. Microsoft'un bu konuda söyledikleri: "D3DX11'in şu anki kullanımları için değiştirme teknolojilerinin DirectXTex ve DirectXTK'yi içerdiğini unutmayın. D3DXMath'ın yerini DirectXMath alır." Şimdiye kadar test edilmedi.
Laurent Couvidou

3

Windows 8, Direct3D 9 uygulamaları için Windows 7 ve Windows Vista'da bulunan temel desteğe sahiptir. Direct3D 9 eskidir ve Direct3D 9 tabanlı oyunları potansiyel olarak etkileyebilecek bazı uyumluluk sorunları vardır, ancak Windows 7'de olduğu gibi az çok işlev görürler.

Windows 8'de Direct3D 9 ile geliştirme, Windows 7'de olduğundan biraz daha zordur. Standart Direct3D 9 başlıkları, Windows 8.0 SDK'nın (VS 2012'de bulunur) bir parçasıdır, ancak bu D3DX9'u içermez. Direct3D 9 Hata Ayıklama Çalışma Zamanı, Windows 8'de desteklenmez. Eski DirectX SDK'yı Windows 8'de kullanabilirsiniz, ancak yüklenmesini sağlayan bazı zorluklar ve sınırlamalar vardır.

Windows 7 ve Windows 8'de yeni uygulamalar yazmak için kullanılması önerilen API Direct3D 11'dir. Bu, hem Win32 masaüstü uygulamaları hem de Windows Mağazası uygulamaları için çalışır. Ayrıca, Windows 8.x SDK'sını kullanmanız ve DirectX SDK'sını kullanmamanız önerilir.

Bkz Windows ve DirectX SDK için Oyunları çok bu konuda mesajların sürü.


Windows XP Service Pack 1'den daha yeni bir Windows sürümüne DirectX yüklemediğinizi unutmayın. "DirectX Son Kullanıcı Çalışma Zamanı" paketi Windows XP SP2, Windows Vista, Windows 7 ve Windows 8.x'e yüklenir, ancak o asla "DirectX" yükler. Sadece eski DirectX SDK'nın isteğe bağlı bitleri olan bazı yardımcı DLL'leri dağıtır: XINPUT 1.3, XAudio 2.7, D3DX, vb. Direct3D, DirectInput, DirectSound, vb. bağlantı
Chuck Walbourn

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.