Przejście z DirectX 10 na DirectX 11

10

Zrobiłem rozsądną liczbę małych projektów hobbystycznych przy użyciu DirectX 9, ale teraz czas przejść do DirectX 11.

Mam książkę Franka Luna'a na temat programowania 3D przy użyciu DirectX 10, ale nic na DirectX 11. Wierzę, że są dość podobne, ale zastanawiałem się, czy ktokolwiek mógłby wymienić główne różnice na poziomie kodu, o których muszę wiedzieć ( lub wskaż istniejące źródło).

JohnB
źródło
Powiązane gamedev.stackexchange.com/questions/2362/…
Kaczka komunistyczna
Słyszałem, że DX10 był naprawdę inny i nie był wstecznie kompatybilny z DX9, podczas gdy DX11 był wstecznie kompatybilny z DX9.
Jokoon
DX10 różni się od DX9, ale DX11 jest dość podobny do DX10, chciałem tylko wiedzieć, jakie były różnice. O dziwo, DX11 będzie działać ze sprzętem DX9, ale DX10 nie;)
JohnB

Odpowiedzi:

15

Dokumentacja zestawu SDK zawiera sekcję dotyczącą migracji do wersji 11, która obejmuje zarówno wersje 9, jak i 10. Jest też strona funkcji D3D11 .

Jedną z największych zmian pod względem kształtu API między 10 a 11 jest to, że 11 przenosi kilka metod z samego urządzenia do nowego interfejsu zwanego kontekstem urządzenia ( ID3D11DeviceContextkonkretnie), w celu obsługi nowych funkcji wielowątkowości.

Gdy jednak zdasz sobie sprawę ze zmiany, dość łatwo jest się do niej przystosować: w miejscu 10 o nazwie „ someDevice->Draw()otrzymasz bezpośredni kontekst dla urządzenia i wywołanie „” immediateContext->Draw().

Inną dużą zmianą jest to, że interfejs API efektów został wyciągnięty z rdzenia i utworzył niezależną dystrybucję źródłową, którą należy samodzielnie skompilować i połączyć. Możesz również zauważyć, że niektóre interfejsy i funkcje D3DX zostały przestarzałe lub usunięte.

Poza tym istnieje kilka nowych parametrów niektórych funkcji i garść dodatkowych pól w strukturach, i tak dalej. Na przykład obiekt opisu bufora w 11 ma dodatkowe StructureByteStridepole, które nie jest w 10 , a tworzenie urządzenia wymaga przekazania informacji o poziomie funkcji . Plus są oczywiste i wyżej wspomniane zmiany w nazwach interfejsów (10 zastąpiono 11).


źródło
Dzięki, właśnie tego potrzebowałem. Szukałem oficjalnego przewodnika po tym, co się zmieniło, ale jakoś nie udało mi się go znaleźć. Dziękuję za tę odpowiedź i innym osobom, które również poświęciły czas na udzielenie dobrych odpowiedzi :)
JohnB
To zabawne, jak szybko się zapomina. Szczególnie nienawidziłem kompilacji efektów i zajęło mi to kilka dni, aby działała. Ale nie uwzględniłem tego w mojej odpowiedzi ...
Notabene
Zamierzałem zamieścić to jako pytanie, ale zdałem sobie sprawę, że twoja odpowiedź już obejmuje większość moich obaw, chociaż chciałbym trochę potwierdzenia. Dla kogoś, kto pracował tylko z DX9, ale chce poszerzyć swoją wiedzę, wybranie książki DX11 nie tylko nauczy mnie o DX11 (oczywiście), ale także zapewni mi wystarczającą wiedzę do pracy z DX10, jeśli zajdzie taka potrzeba?
David Gouveia,
Tak, właściwie.
1

Myślę, że główną różnicą jest to, że w DX11 DXFont zniknął, poza tym, że jest prawie tak, jak powiedział notabene. Ta książka DX10 powinna być w porządku. Użyłem go podczas przeprowadzki do DX11 i nie miałem żadnych problemów. Musisz jednak od czasu do czasu zajrzeć do msdn, istnieją pewne niewielkie różnice w interfejsie API, a niektóre miejsca IIRC.

dotminic
źródło
1

Nie będzie potrzeby zmiany. Directx11 dodaje tylko nowe funkcje. Po prostu zmienisz numery z ID3D10 na ID3D11 itp.


DirectX11 dodaje (jeśli nie chodzi o tesalację HW) Direct Compute: API dla GPGPU, z doskonałym połączeniem z linią graficzną (nie mogę tego powiedzieć o CUDA lub openCL). I możliwość wielu tekstur RW i buforów na module cieniującym piksele, co otwiera wiele nowych możliwości.

Notabene
źródło