Чи варто вивчати Direct3D 9, 10 або 11? [зачинено]


14

Я тільки починаю вступати в програмування 3D з Direct3D. Яку версію D3D мені потрібно забрати?

11 виглядає досить акуратно, але 9 і 10 все ще здається досить присутніми. З огляду на сучасний стан галузі розвитку ігор, яку версію має сенс починати використовувати?


Питання "Яку технологію використовувати" - це не добре питання Q / A.
MichaelHouse

Відповіді:


12

Це залежить від того, чи хочете ви створити двигун для виробництва гри, яка повинна бути виконана через три роки, або через рік чи шість місяців, і ви думаєте про консольні порти чи ні. Викинути 360 порт вашої гри з Direct3D9 буде порівняно просто, але вам потрібно буде зробити набагато більше, походить з D3D11. Пам'ятайте, що D3D11 блокує всіх користувачів XP, якщо не обов'язково все обладнання D3D9.

Останнє опитування Steam свідчить про те, що близько 16% людей все ще використовують Windows XP. Ви можете собі дозволити вирізати їх? До моменту, коли ваша гра буде зроблена, як це зміниться? Чи збираєтесь ви використовувати функції, які залежать від API вищого рівня? Це питання, на які вам потрібно буде відповісти самостійно.

Direct3D 9 досить чортово доступний, і ви можете охопити багатьох людей за допомогою гри D3D9, але дні пронумеровані, особливо на ПК. Якщо ви не зацікавлені в націлюванні на цих людей, то це мало сенсу.

О, і не турбуйтеся з DX10. Немає жодної причини використовувати його над DX11. Якщо ви не хочете використовувати D2D / DirectWrite, що не є розумним.

Звичайно, варто згадати, що в DX11 немає заміни класів, які, як сам хобіст, я вважав надзвичайно корисним у DX9. Такі, як ID3DXMesh, ID3DXSprite, ID3DXFont, повинні компілювати ID3DXEffect з джерела тощо. Microsoft рекомендує DirectWrite замінити ID3DXFont, але, звичайно, вони забули насправді зробити DX11 сумісним з новими системами Direct2D / DirectWrite, що, на мою думку, було сліпо дурним .


Чому вони видалили рамки ефектів? Це був дуже корисний клас ІМО.
dotminic

@__dominic: це не видаляється, але його потрібно скласти самостійно.
DeadMG

1
@__dominic: Як зазначав DeadMG, рамку ефектів не було видалено, вона була виведена в окремий набір файлів коду, який ви можете скласти самостійно - це було нібито зроблено для того, щоб він міг бути більш чітким, ніж ядро ​​D3D, і полегшити проблеми розгортання (особливо навколо D3DX).

1
Я думаю, що гірше, ніж вирізати 25% користувачів XP, це те, що лише 17% мають графічні процесори DX11 (на сьогодні).
DMan

2
@DMan: D3D11 може працювати на нижньому рівні апаратного забезпечення, включаючи обладнання D3D9.
DeadMG

9

tldr: Дізнайтеся D3D11.

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

Однак якщо у вас немає Vista або краще, або ви, зрештою, хочете, щоб ваш власний код запускався на XP (наприклад, розповсюджував вашу гру серед користувачів XP), вам доведеться використовувати D3D9. Ринок XP, мабуть, скорочується, хоча, я б сказав, піти на 11, якщо зможеш.


3

Якщо ви абсолютно новачок у програмуванні 3D, і особливо якщо ви новачок у програмуванні COM та Windows, я б настійно радив не вивчати DirectX зараз. На мій досвід, DirectX є надзвичайно потужним інструментом, але він має дуже круту криву навчання, яку необхідно враховувати, окрім кривих навчання програмування Windows, 3D програмування та багатьох інших. Якщо ви почнете з DirectX, ви можете відчути переповненість усіма деталями виготовлення кодового коду, тому я раджу проти цього.

Натомість я б рекомендував більш простий API, який дозволяє більше зосередитися на вивченні 3D-програмування. XNA - це дуже приємно, і оскільки він лежить на вершині DirectX, після переходу на DirectX ви отримаєте кілька ідей, завдяки яким крива навчання DirectX значно полегшиться.

Тепер, якщо у вас є досвід роботи з 3D-програмуванням, наприклад, з OpenGL, і ви знаєте, як робити програмування COM, я б рекомендував DirectX 11. Будь-яка, окрім останньої версії, застаріла, і будь-який досвід, отриманий від неї, буде корисний для коротший проміжок часу.

Але знову ж таки, справжній досвід випливає з різноманітності, тому я рекомендую вам вивчити як DirectX, так і OpenGL, а також XNA, якщо хочете, і стільки API, скільки зможете. Таким чином, ви отримаєте абстрактні знання про те, як працює 3D-програмування з різними інструментами, і ви зможете використовувати правильний інструмент для кожної роботи.


2

Я рекомендую DX11 або DX10. Різниця дуже мала. Ви можете просто робити більше речей з DX11 (тестування hw, краща gpgpu, вихід на кілька текстур на піксельних шейдерах ..). DirectX 9 має іншу архітектуру і на даний момент мало застарілий. Якщо ви запитаєте про поточну галузь розробників ігор: для справді розроблених ПК ігор DX9 мертвий.

Але я мушу сказати:
Не хвилюйтесь про api , як тільки ви дійсно зрозумієте, як працює графіка, вивчення нового api займе максимум один місяць. Ще коротший час.


3
DX9 не застарів. На XP все ще є тонна потенційних користувачів. Він, можливо, вже не в розвитку, і він застаріє в найближчі кілька років, але поки це не так.
Качка комуністична

1
@thecommunistduck Я згоден, але DX9 абсолютно застарілий для його вивчення. Тому що колись початківець, який зараз починає його вивчати, буде це добре знати ... він застаріє. І впевнений, що я сказав це погано у своїй відповіді.
Нотабене

-5

Я чув, що dx9 з win xp системою є одноядерною системою. Це стара техніка. Я рекомендую вам dx11.


3
Ця відповідь не додає нічого продуктивного, і незрозуміло (і, можливо, неправильно і вводить в оману), що ви пропонуєте щодо "єдиної основної системи".

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