Есть ли преимущество в использовании DX10 / 11 для 2D-игры?

10

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

Есть ли веская причина для перехода на DX10 / 11 (или эквиваленты OpenGL) для 2D-игр, или было бы разумнее придерживаться DX9, учитывая, что значительная доля рынка все еще работает на более старых технологиях (например, Февраль 2012 Согласно опросам Steam, около 17% пользователей все еще используют Windows XP)?

Дэвид Гувея
источник

Ответы:

5

Это зависит от того, что вы делаете. Если вы используете Direct3D, единственная причина для переключения - получить доступ к аппаратным функциям, которые вы не можете получить иначе.

Для 2D-игры теоретически возможно, что некоторые функции могут вас заинтересовать. Например, OpenCL или DirectCompute. Civilization 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 непригоден для использования. Это, конечно, функционально и исправно, просто не приятно. Хотя некоторые драйверы, которые вы найдете для его реализации , не годны к эксплуатации. Аппаратное обеспечение ATI DX9 больше не поддерживается, поэтому эти драйверы действительно глючат. И 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.

Шон Миддледич
источник