Это зависит от того, что вы делаете. Если вы используете 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.
Геометрические шейдеры сами по себе являются причиной использования D3D10 / 11, если вы планируете иметь большое количество частиц или спрайтов.
DirectCompute также может быть использован для некоторых хороших преимуществ скорости.
Лично, просто иметь гораздо более чистый и приятный API-интерфейс D3D10 / 11 - это достаточная причина, чтобы никогда больше не трогать D3D9 или OpenGL для любых современных проектов только для Windows. Реально, тем не менее, необходимость ориентироваться на мобильные устройства с GL | ES и все еще значительным скоплением WinXP требует избегать D3D10 / 11 и придерживаться D3D9 или OpenGL.
Обратите внимание, что использование маршрута OpenGL позволяет получать геометрические шейдеры, OpenCL и другие новые аппаратные функции даже в WinXP.
источник