Перехід від DirectX 10 до DirectX 11


10

Я зробив достатню кількість невеликих хобі-проектів за допомогою DirectX 9, але саме час перейти на DirectX 11 зараз.

У мене є книга Франка Luna'a з 3D програмування з використанням DirectX 10, але нічого на DirectX 11. Я вважаю, що вони досить схожі, але мені було цікаво, чи хтось міг би перерахувати основні відмінності на рівні коду, про який мені потрібно знати ( або вказати на існуюче джерело).



Я чув, що DX10 насправді відрізнявся і не був сумісний з DX9, тоді як DX11 був сумісний з DX9.
jokoon

DX10 сильно відрізняється від DX9, але DX11 досить схожий на DX10, я просто хотів знати, в чому полягають відмінності. Як не дивно, DX11 буде працювати з обладнанням DX9, але DX10 не буде;)
JohnB

Відповіді:


15

Документація SDK містить розділ про перехід до 11, який охоплює як 9, так і 10. Там же знаходиться сторінка з функціями D3D11 .

Однією з найбільших змін в частині форми API між 10 і 11 є те, що 11 переміщує купу методів із самого пристрою до нового інтерфейсу, який називається контекстом пристрою ( ID3D11DeviceContextконкретно), щоб підтримувати нові функції з багатопотоковою ниткою.

Однак, коли ви знаєте про зміну, адаптуватися досить просто: там, де ви були б у 10 під назвою " someDevice->Draw()", замість цього ви отримаєте безпосередній контекст для пристрою і дзвоните " immediateContext->Draw()."

Інша велика зміна полягає в тому, що API Effects витягнуто з ядра та здійснив незалежний розподіл джерела, який ви повинні скласти та зв’язати самостійно. Ви також можете помітити деякі застарілі або видалені інтерфейси та функції D3DX.

Крім цього, існує кілька нових параметрів для деяких функцій та кілька додаткових полів у структурах тощо. Наприклад, об'єкт опису буфера в 11 має додаткове StructureByteStrideполе, яке не в 10 , а створення пристрою включає передачу інформації про рівень функції . Плюс є очевидні та вищезгадані зміни в назвах інтерфейсів (10s замінені на 11s).


Спасибі, саме те, що мені було потрібно. Я шукав офіційного керівництва щодо того, що змінилося, але чомусь не вдалося його знайти. Дякую за цю відповідь та іншим людям, які
знайшли

Це смішно, як швидко забути ці речі. Я особливо ненавидів компіляцію ефектів, і мені знадобилося кілька днів, щоб вона працювала. Але я не включив це у свою відповідь ...
Notabene

Я збирався поставити це як питання, але зрозумів, що ваша відповідь вже охоплює більшість моїх проблем, хоча мені хотілося б підтвердження. Для того, хто працював лише з DX9, але прагне оновити свої знання, підбір книги DX11 не тільки навчить мене про DX11 (очевидно), але й дасть мені достатньо знань для роботи з DX10, якщо це потрібно?
Девід Гувейя

Так, досить багато.

1

Я думаю, що головна відмінність полягає в тому, що в DX11 DXFont вже немає, крім того, що це майже так, як сказав notabene. Вам слід добре з цією книгою DX10. Я використовував цей при переході на DX11, і у мене не було проблем. Вам потрібно буде час від часу заглядати у msdn, проте в API є деякі незначні відмінності в деяких місцях IIRC.


1

Не потрібно буде змінювати. Directx11 додає лише нові функції. Ви будете просто змінювати номери з ID3D10 на ID3D11 і т.д.


DirectX11 додає (якщо не говорити про розсипку тестування HW) Direct Compute: API для GPGPU, з відмінним підключенням до лінії графічних труб (я не можу сказати про CUDA або openCL). І можливість декількох текстур і буферів RW на піксельному шейдері, що відкриває безліч нових можливостей.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.