Чи є якась перевага у використанні DX10 / 11 для 2D гри?


10

Я не зовсім знайомий з набором функцій, введеним обладнанням класу DX10 / 11. Мені нечітко знайомі нові етапи, додані до програмованого графічного конвеєра, такі як шейдер геометрії, обчислювальний шейдер та нові етапи тесселяції. Я не бачу, як жодне з них має велике значення для 2D-гри.

Чи є якась вагома причина перейти на DX10 / 11 (або еквіваленти OpenGL) для 2D-гри, чи було б розумніше дотримуватися DX9, враховуючи, що значна частина ринку все ще працює на старих технологіях (наприклад, Лютий 2012 року в опитуваннях Steam перелічено близько 17% користувачів, які все ще використовують Windows XP)?

Відповіді:


5

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

Для 2D гри теоретично можливо, що певні функції можуть вас зацікавити. Наприклад, OpenCL або DirectCompute. Цивілізація V отримує деяке використання від DirectCompute для декомпресії текстур. Це різко скорочує час завантаження, оскільки воно має завантажувати лише стислі дані. І 2D ігри часто мають багато зображень. Якщо час завантаження - це проблема, це може допомогти.

OpneCL має бути доступним на всіх пристроях GeForce 8xxx та вище. На ATI він доступний на HD 4xxx та кращому обладнанні.

Я б сказав, що найбільша функція, яку ви можете використовувати в DX11, - це можливість більш довільно читати і записувати зображення в шейдерах. Це може бути корисним для певних спеціалізованих ефектів. Зараз я не можу придумати жодного ... що повинно сказати вам, наскільки це можливо.

Взагалі, я б сказав, що якщо ви використовуєте D3D, ви, ймовірно, не наберете багато. І якщо ви вже не розумієте, що таке нові функції, і хочете використовувати їх у своїй грі, ви майже точно не наберете багато. Більшість із них будуть складнішими.

OpenGL відрізняється однією з основних причин. OpenGL 2.1 (більш-менш еквівалентно D3D9) засмоктує в якості API. OpenGL 3.3 (плюс деякі новіші розширення, що працюють на апаратному забезпеченні 3.3) значно покращує API. Явне розташування атрибутів, розділення програм шейдерів, все , що є в мові 420 затінення , тощо.

Деякі з них працюють досить добре у формі розширення проти 2.1. Деякі з них ... ні. Я все ще не впевнений, чи нормально використовувати явні атрибути з attributeдеклараціями (перед поточним inсинтаксисом). Мовний пакет 420 затінення спеціально говорить, що він не працює з версіями GLSL до 1.30 (він же: OpenGL 3.0).

Це не означає, що GL 2.1 є непридатним. Це звичайно функціонально і справно, просто не приємно. Хоча деякі драйвери, які ви знайдете, що реалізуєте це , не корисні. Апаратне забезпечення DX9 ATI вже не підтримується, тому ці драйвери насправді неполадки. І Intel ніколи не піклувалася про OpenGL, тому використання шейдерів на їх апараті є удачею.

Але особисто, якщо ваша призначена база користувачів дозволяє це, я б перейшов до GL 3.3, якщо ви використовуєте OpenGL. Якщо ні, то вам просто доведеться розібратися з питаннями 2.1.


5

Я думаю, що ви повинні врахувати кілька речей:

  • Якщо у вас добре перевірений двигун D3D9, можливо, не варто переносити його на D3D11, якщо ви не скористаєтесь новими функціями. Починаючи з нуля, D3D11 набагато привабливіше.

  • Як скоро відбудеться дата виходу вашої гри? XP вийде з підтримки трохи більше двох років, і якщо ви подивитеся на історичні дані, то база встановлення XP досить швидко падає (~ 1% / місяць на Steam).

  • Поміркуйте, яка частка 17% користувачів XP матиме ПК, який відповідає мінімальній специфікації для вашої гри під D3D9. Чим вище, тим цінніше це їх підтримка.

  • DX10 в основному безглуздо використовувати для нових розробок. DX11 працює на тих же операційних системах та обладнання (через рівні функцій).

  • DX11 підтримує програмний рендер (WARP) як резервний пристрій, який може бути досить швидким для запуску гри з низькими вимогами до графічного процесора.

  • Native DX9 підтримує більше функцій, ніж D3D11, коли він використовує будь-який з рівнів функцій D3D9. На щастя, апаратне забезпечення DX9 на ПК з підтримкою DX10 є рідкістю.

  • Обладнання DX10 / 11 має набагато менш різноманітні можливості, тому, якщо ви змушуєте апаратне забезпечення DX9 використовувати WARP, вам не потрібно турбуватися про незручні обмеження з такими речами, як текстури без потужності двох або незручне відображення текстових пікселів .

  • Якщо ваша гра буде інтенсивно апаратною, DX11 має кілька додаткових хитрощів для підвищення продуктивності. Наприклад, багаторядне кодування малювання.


Я трохи розгублений щодо рівнів функцій. Якщо я розробляю за допомогою DX11, але орієнтований на рівень функцій DX9, я розумію, що він працюватиме на апаратному забезпеченні DX9. Але чи все-таки буде потрібно час виконання DX11, тобто він буде працювати в Windows XP?
Девід Гувейя

DX11 взагалі не працює на XP. Рівень функцій дозволяє вам використовувати API DX11 зі старішим обладнанням. Перегляньте msdn.microsoft.com/en-us/library/ff476876%28v=vs.85%29.aspx, щоб дізнатись, що дозволяє вам робити кожен рівень функцій.
Адам

1

Тільки шейдери для геометрії є приводом для використання D3D10 / 11, якщо ви плануєте мати велику кількість частинок або спрайтів.

DirectCompute також може бути використаний для деяких приємних переваг швидкості.

Особисто просто наявність набагато чистішого та приємнішого API D3D10 / 11 є достатньою підставою ніколи більше не торкатися D3D9 або OpenGL для будь-яких сучасних проектів, призначених лише для Windows. Однак реально, необхідність орієнтації на мобільні пристрої з GL | ES та все ще великою натовпом WinXP вимагає уникати D3D10 / 11 та дотримуватися D3D9 або OpenGL.

Зауважте, що перехід маршруту OpenGL дозволяє отримувати шейдери геометрії, OpenCL та інші новіші апаратні функції навіть на WinXP.

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