DirectX SDK vs Windows SDK: какой из них использовать?

У меня есть старый игровой движок (вроде) на основе DirectX 10, который я планировал переместить на DX 11. Я также только что установил Windows 8 и VS 2013 и, пытаясь запустить этот старый проект, я 've узнал, что DirectX SDK устарел и теперь заменен Windows 8 SDK. В этом случае я задаюсь вопросом, имеет ли смысл обновлять DX 11, или я должен попытаться сделать мой движок новым SDK Windows 8. Есть несколько вещей, которые я хотел бы знать, прежде чем принимать решение:

1) Является ли Windows 8 SDK предметом изучения или DX 11 по-прежнему актуальна? Например, если вы хотите изучить С++, вы должны изучить С++ 11, поэтому, если вы хотите изучить Direct3D сейчас, вы должны изучить Windows 8 SDK?

2) Есть много отличных ресурсов для обучения DirectX SDK: много учебников, Microsoft samples, образцы NVIDIA Graphics SDK, образцы AMD Radeon SDK и т.д. Есть ли подобное качество материалы, доступные для Windows 8 Direct3D или только msdn на данный момент?

3) Будет ли мой драйвер на базе Windows 8 SDK работать только в Windows 8?

4) Любые из первых рук опыт/сравнения между двумя?

Большое спасибо!

Ответ 1

1) Является ли Windows 8 SDK предметом изучения, или DX 11 по-прежнему имеет значение?

Что случилось именно так: они устарели от некоторых вещей из автономного DirectX SDK, немного разделили его и объединили в Windows SDK. Также переименованы некоторые заголовки. Это все. Нечего учиться.

На самом деле вы должны отучить (то есть забыть) некоторые вещи. В частности, D3DX, среда эффектов и т.д. Поскольку они отрываются от нового SDK, вам нужно найти альтернативные библиотеки, чтобы их заменить (например, доступен источник Effect11, для загрузки растровой графики используйте DirectXTK или FreeImage, для сетки используйте Assimp; find или разворачивать собственные режимы спрайтов и шрифтов и т.д.).

ОК, нужно сказать, что они добавили DirectX 11.1 (Win8) и 11.2 (Win8.1). Но их функции слишком малы и очень специфичны, чтобы сказать, что вы должны изучить его.

2) Есть много отличных ресурсов для обучения DirectX SDK [...] Есть ли похожие материалы для Windows 8 Direct3D или просто msdn на данный момент?

Существует новый набор образцов в MSDN, например. Примеры приложений Windows Store. Все они перепутаны с другими (не DirectX) образцами Windows SDK, поэтому используйте поиск. Поскольку API сам по себе остается неизменным, нет ничего нового для настольных приложений. Вы можете легко адаптировать старые образцы для сборки без автономного DirectX SDK, заменив устаревшие вещи.

3) Будет ли мой драйвер на базе Windows 8 SDK работать только в Windows 8?

Нет, с этим SDK вы можете настроить таргетинг на все, начиная с Windows XP. Но вы портируете DirectX 11 API, это значит, что вашим приложениям потребуется хотя бы Vista SP2. Вы можете сохранить свой код DirectX 10 для Vista без каких-либо целей SP. И для запуска под Win XP вам понадобится путь кода DirectX 9. Или OpenGL во всех случаях, конечно;)

4) Любые из первых рук опыт/сравнения между двумя?

Ну, стиль устаревания Microsoft и перемещение вещей без выгоды иногда расстраивает. Но мы привыкли.

Портирование с DirectX 10 на DirectX 11 API очень простое. Но перенос расширений, таких как D3DX, является болью: посмотрите мой ответ здесь для некоторых полезных ссылок.

Мое собственное мнение состоит в том, что вы не можете полагаться на вторичные библиотеки Microsoft, поскольку их можно устаревать и сокращать в самый опасный момент. Но ваши решения не смогут. Поэтому, если у вас есть загрузчик текстур на основе FreeImage или в вашей собственной библиотеке, у вас есть указатель на данные растрового изображения и вы можете использовать его в любом месте: DirectX, OpenGL, прямо в окно прямо, независимо от того, что вы хотите. Если у вас есть собственный механизм эффекта шейдера, вы никогда не столкнетесь с проблемой невозможности использовать свою собственную структуру эффектов в приложениях Windows Store.

Я использую только основные API-интерфейсы Microsoft в любом месте и универсальные портативные сторонние библиотеки для чего-либо еще: это уменьшает связь и зависимость от одного решения и дает больше свободы. Поэтому, если один lib сломан, мне не нужно переписывать их всех.

Ответ 2

Начиная с Windows 8, SDK DirectX включен как часть SDK Windows.

DirectX SDK (июнь 2010 г.) по-прежнему доступен в качестве последней версии автономного SDK DirectX.

Взгляните на эту статью: где находится DirectX SDK