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).
Odpowiedzi:
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 (
ID3D11DeviceContext
konkretnie), 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
StructureByteStride
pole, 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
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.
źródło
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.
źródło