2016-02-10 1 views
0

В настоящее время я работаю над простым проектом игрового движка. Я бы хотел, чтобы он был независимым от платформы, поэтому для начала я взял только классическое приложение Windows Desktop и приложение Metro Style.Отдельный проект DirectX/C++ для WinAPI и WinRT

Из этой картины: Windows APIs

Мы можем видеть, что блоки C/C++, являются общими для обеих частей. Другими словами, я хотел бы легко переключаться между конфигурациями платформ. Я создал простую статическую библиотеку WinAPI, которую можно легко включить в проект, а также движок DirectX, и он отлично работает. Однако у меня возникают проблемы с тем же, что и в WinRT (используется в приложениях Metro Style).

Возможно ли иметь один проект Visual Studio, который может использовать WinAPI или WinRT? Было бы идеально, если бы у меня могла быть одна точка входа для игры и просто переключать базовые API.

ответ

1

Нет. Один проект VS, который генерирует классический win32 exe и приложения WinRT (в настоящее время Universal), невозможен.

Теоретически они могли бы сделать это возможным, например, у вас может быть один проект, который создает консольное приложение или приложение gui. Разница между ними сводится к одному (или двум) флагам.

Разница между классическим exe и приложением WinRT довольно велика: есть манифесты, упаковка и специальный соус, не говоря уже о ресурсах (значки и т. Д.), Указаны по-разному.

В пользовательском интерфейсе Visual Studio это проявляется в различных наборах страниц свойств, помимо общего ядра компилятора и компоновщика, конечно.

Другая причина - одна из стратегий. Microsoft хочет, чтобы вы продвинулись вперед и приняли API WinRT. Это набор API, который работает на всех устройствах Windows (если вы игнорируете слон Win7 в комнате). Поддержка двойного режима будет посылать неверный сигнал разработчикам.

В качестве примечания стороны, что сами заголовки окон (windows.h) аннотируются семейством API. CreateNamedPipe#ifdef в приложении WinRT, например, для классических приложений CreateFile и CreateFile2 для современных приложений.

+1

Один vcxproj, содержащий как UWP, так и классическое настольное приложение для Windows, теоретически возможно с большим количеством пользовательских '' .props'' файлов, но, как правило, огромная боль и хрупкость. Лучше иметь параллельные файлы vcxproj для каждого типа с общим кодом. Я использую этот метод для DirectXTK, DirectXTex, DirectXMesh. Что касается создания кода во всех этих контекстах, см. [Эту статью] (http://blogs.msdn.com/b/chuckw/archive/2012/09/17/dual-use-coding-techniques-for -games.aspx), но имейте в виду, что «appmodel» совсем другой, поэтому общий код полезности хорош, совместный пользовательский интерфейс не является. –

 Смежные вопросы

  • Нет связанных вопросов^_^