Czy Windows 8 nadal obsługuje DirectX 9?

9

Czy Windows 8 obsługuje DirectX 9? Ponieważ przeglądałem niektóre przykłady napisane w C ++ i DirectX 9 dla Windows 8. To nie było tak, jak wiem (patrz tutaj http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2 ). Np. Inizializacja DirectX za pomocą COM:

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

To po prostu dziwne, ponieważ znam to po staremu:

ID3D11Device *dev;                  
ID3D11DeviceContext *devcon;  

(Mam nadzieję, że rozumiesz, co chcę powiedzieć)

Mam nadzieję, że nie zmieniło się to całkowicie z powodu wydania nowego systemu operacyjnego.

LaVolpe
źródło
1
Trudno mi było wyobrazić sobie, że Microsoft nagle przestałby obsługiwać 90% + wszystkich gier na platformie Windows. Jeszcze trudniej mi uwierzyć, że taki ruch nie byłby już wściekły.
Jari Komppa
To powiedziawszy, możliwe jest, że najnowsze SDK nie zawierają nagłówków / bibliotek dx9; Nie sprawdziłem To nie znaczy, że nie można tak po prostu korzystać z dx9 sdk. Chyba że najnowsze studio wizualne w jakiś sposób ci to zabrania, ale byłoby to głupie.
Jari Komppa
Cóż, nie mogę w to uwierzyć, ale myślę, że jest to możliwe, ponieważ uzyskanie marki „Windows 8” na PC większość ma ekran dotykowy i czy kiedykolwiek widziałeś grę napisaną w DirectX, która obsługuje grę z ekranem dotykowym?
LaVolpe
Jestem pewien, że nie będziesz w stanie tworzyć „nowoczesnych interfejsów użytkownika” za pomocą dx9.
Jari Komppa,
1
Obiekty D3D zawsze były obiektami COM - nie używanie surowych wskaźników, ale zamiast tego umieszczenie ich w inteligentnym wskaźniku COM zawsze było możliwe.

Odpowiedzi:

12

Tak , Windows 8 obsługuje DirectX 9.

W fazie programowania stary pakiet DirectX SDK jest już nieaktualny , ale wszystkie nowe biblioteki i nagłówki będą dostępne w nowym zestawie SDK systemu Windows 8, który jest dołączony do programu Visual Studio 2012. Możesz przejść na „starą drogę” bez problemu . Jeśli potrzebujesz PIX do debugowania lub biblioteki D3DX wysokiego poziomu, będziesz musiał ponownie zainstalować stary DXSDK, ponieważ nie ma go w Windows 8 SDK.

Dotyczy to jednak tylko zwykłych starych aplikacji komputerowych. W przypadku aplikacji w stylu Metro pozwolę Chuckowi Walbournowowi z firmy Microsoft mówić :

Direct3D9 i Direct3D9Ex nie są obsługiwane dla aplikacji w stylu Metro. Używanie zestawu DirectX SDK z aplikacjami w stylu Metro nie jest zalecane ani obsługiwane. Zobacz http://msdn.microsoft.com/en-us/library/ee663275.aspx .

Dostępnych jest wiele zasobów, które mogą pomóc w przenoszeniu bazy kodu Direct3D 9 do Direct3D 11. Większość materiałów do przenoszenia z Direct3D 9 do Direct3D 10.x ma tutaj pełne zastosowanie, ponieważ API Direct3D 11 jest bardzo podobne do Direct3D 10.

Zobacz http://blogs.msdn.com/b/chuckw/archive/2011/07/11/getting-started-with-direct3d-11.aspx . Zapoznaj się z systemem Windows do rzeczywistości: jak najlepiej wykorzystaj grafikę Direct3D 10 w swoich grach, ponieważ obejmuje ona liczne pułapki i problemy z wydajnością, które napotkali twórcy w przeszłości, oraz aktualizację technologii DirectX 11 w celu podsumowania różnic między Direct3D 10 .x i Direct3D 11.

MSDN ma również przewodnik po portach http://msdn.microsoft.com/en-us/library/ff476190.aspx, który prowadzi do http://msdn.microsoft.com/en-us/library/bb205073.aspx dla przejście bezpośrednio z Direct3D 9 do Direct3D 11.

Niestety, nie można używać D3D9 bezpośrednio do aplikacji w stylu Metro. Ale możesz użyć D3D11 i ograniczyć się do pewnego poziomu funkcji (np. D3D_FEATURE_LEVEL_9_3), Jeśli chcesz obsługiwać starszy sprzęt.

Laurent Couvidou
źródło
Wow, dziękuję za odpowiedź. Jak widzę, przeprowadziłeś świetne badania
LaVolpe
Cóż,
niezupełnie, akurat
1
AFAIK zestaw SDK win8 dostarczony z VS 2012 nie wysyła już żadnych nagłówków D3D11X * - tylko D3D11 *. To pozostawia bez wielu funkcji narzędziowych, takich jak ładowanie shaderów z pliku i kompilowanie ich w jednym wywołaniu funkcji.
W rzeczy samej. Co Microsoft mówi na ten temat: „Należy pamiętać, że technologie zastępujące dla obecnych zastosowań D3DX11 obejmują DirectXTex i DirectXTK. D3DXMath jest zastąpiony przez DirectXMath”. Dotychczas nie testowane.
Laurent Couvidou
3

Windows 8 ma taką samą podstawową obsługę aplikacji Direct3D 9, jaka była obecna w Windows 7 i Windows Vista. Direct3D 9 jest starszą wersją i na pewno istnieją pewne problemy ze zgodnością, które mogą potencjalnie wpływać na gry oparte na Direct3D 9, ale działają one mniej więcej tak samo, jak w Windows 7.

Programowanie z Direct3D 9 na Windows 8 jest nieco trudniejsze niż na Windows 7. Standardowe nagłówki Direct3D 9 są częścią zestawu Windows 8.0 SDK (dołączonego do VS 2012), ale nie obejmuje D3DX9. Środowisko uruchomieniowe debugowania Direct3D 9 nie jest obsługiwane w systemie Windows 8. Możesz użyć starszego zestawu SDK DirectX w systemie Windows 8, ale jest wiele problemów związanych z jego instalacją i ograniczeniami.

Zalecanym interfejsem API do pisania nowych aplikacji w systemie Windows 7 i Windows 8 jest Direct3D 11. Działa to zarówno dla aplikacji klasycznych Win32, jak i aplikacji ze Sklepu Windows. Ponadto zaleca się korzystanie z zestawu SDK systemu Windows 8.xi nie korzystanie z zestawu DirectX SDK.

Zobacz Games for Windows i DirectX SDK, aby znaleźć wiele postów na ten właśnie temat.

Chuck Walbourn
źródło
Pamiętaj, że nie „instalujesz DirectX” w żadnej wersji systemu Windows nowszej niż Windows XP Service Pack 1. Pakiet „Środowisko wykonawcze użytkownika bezpośredniego DirectX” zostanie zainstalowany w systemie Windows XP SP2, Windows Vista, Windows 7 i Windows 8.x, ale to nigdy nie instaluje „DirectX”. Po prostu wdraża niektóre biblioteki pomocnicze DLL, które są opcjonalnymi bitami ze starszego pakietu DirectX SDK: XINPUT 1.3, XAudio 2.7, D3DX itp. Direct3D, DirectInput, DirectSound itp. Są zawsze aktualizowane tylko w ramach oficjalnych dodatków Service Pack lub Windows Update. link
Chuck Walbourn
2

DirectX zostanie zainstalowany w systemie Windows 8, Windows 7, Windows Vista lub Windows XP.

Mikołaj Marcisz
źródło