Ответы на часто задаваемые вопросы о переносе игр в универсальная платформа Windows (UWP).
Перенос моей игры будет набором операций поиска и замены методов API или нужно ли планировать более тщательное переносирование?
Direct3D 11 — это значительное обновление с Direct3D 9. Существует несколько сдвигов парадигмы, включая отдельные API-интерфейсы для виртуализированного графического адаптера и его контекста, а также новый уровень полиморфизма для ресурсов устройства. Ваша игра по-прежнему может использовать графическое оборудование по сути так же, но вам потребуется узнать о новой архитектуре API Direct3D 11 и обновить каждую часть графического кода, чтобы использовать правильные компоненты API. Ознакомьтесь с понятиями и рекомендациями по переносу.
Что такое новый контекст устройства? Нужно ли заменить устройство Direct3D 9 устройством Direct3D 11, контекстом устройства или обоими?
Теперь устройство Direct3D используется для создания ресурсов в памяти видео, а контекст устройства используется для задания состояния конвейера и создания команд отрисовки. Дополнительные сведения см. в статье о наиболее важных изменениях с Direct3D 9?
Нужно ли обновить таймер игры для UWP?
QueryPerformanceCounter вместе с QueryPerformanceFrequency по-прежнему является лучшим способом реализации таймера игры для приложений UWP.
Следует учитывать нюансы с таймерами и жизненным циклом приложения UWP. Приостановка и возобновление работы отличается от повторного запуска классической игры, так как ваша игра будет возобновлять моментальный снимок в то время, когда игра была последней. Если большое количество времени прошло - например, несколько недель - некоторые реализации таймера игры могут не вести себя корректно. События жизненного цикла приложения можно использовать для сброса таймера при возобновлении игры.
Игры, которые по-прежнему используют инструкцию RDTSC, необходимо обновить. См . раздел "Время игры" и "Многоядерные процессоры".
Мой игровой код основан на D3DX и DXUT. Есть ли какие-либо доступные возможности, которые помогут мне перенести мой код?
Проект сообщества DirectX (DirectXTK) предлагает вспомогательные классы для использования с Direct3D 11.
Разделы справки поддерживать пути кода для рабочего стола и Microsoft Store?
Серия статей Chuck Walbourn под названием "Методы кодирования двойного использования для игр " предлагает рекомендации по совместному использованию кода между настольным компьютером и путями кода Microsoft Store.
Разделы справки загрузить ресурсы изображений в приложении UWP DirectX?
Существует два пути API для загрузки изображений:
- Конвейер содержимого преобразует изображения в файлы DDS, используемые в качестве ресурсов текстур Direct3D. См. сведения об использовании 3-D ресурсов в игре или приложении.
- Компонент образов Windows можно использовать для загрузки изображений из различных форматов и использовать для растровых изображений Direct2D, а также для ресурсов текстур Direct3D.
Вы также можете использовать DDSTextureLoader и WICTextureLoader из DirectXTK или DirectXTex.
Где находится пакет SDK для DirectX?
Пакет SDK DirectX входит в состав пакета SDK для Windows. Последний пакет SDK DirectX, который был отделен от пакета SDK для Windows, был в июне 2010 года. Примеры Direct3D находятся в коллекции кода вместе с остальными примерами приложений Для Windows.
Что касается распространяемых компонентов DirectX?
Подавляющее большинство компонентов в пакете SDK для Windows уже включены в поддерживаемые версии ОС или не имеют компонента DLL (например, DirectXMath). Все компоненты API Direct3D, которые приложения UWP могут использовать, уже будут доступны для игры; Вам не нужно распространять их.
Классические приложения Win32 по-прежнему используют DirectSetup, поэтому если вы также обновляете классическую версию игры, см . развертывание Direct3D 11 для разработчиков игр.
Можно ли обновить классический код до DirectX 11, прежде чем уйти от эффектов?
См. эффекты обновления Direct3D 11. Эффекты 11 помогают удалить зависимости от устаревших заголовков пакета SDK DirectX; он предназначен для использования в качестве помощи для переноса и может использоваться только с классическими приложениями.
Существует ли путь для переноса игры DirectX 8 в UWP?
Да.
- Чтение преобразования в Direct3D 9.
- Убедитесь, что у вашей игры нет остатков фиксированного конвейера — см . нерекомендуемые функции.
- Затем перейдите по пути переноса DirectX 9: порт из D3D 9 в UWP.
Можно ли перенести игру DirectX 10 или 11 в UWP?
Классические игры DirectX 10.x и 11 легко перенести в UWP. См. статью "Миграция в Direct3D 11".
Разделы справки выбрать правильное устройство отображения в системе с несколькими мониторами?
Пользователь выбирает, на каком мониторе отображается ваше приложение. Позвольте Windows предоставить правильный адаптер, вызвав D3D11CreateDevice с первым параметром, равным nullptr. Затем получите интерфейс IDXGIDevice устройства, вызовите GetAdapter и используйте адаптер DXGI для создания цепочки буферов.
Разделы справки включить антиалиасинг?
При создании устройства Direct3D включена защита (multisampling). Перечисление поддержки с несколькими планами путем вызова CheckMultisampleQualityLevels, а затем задайте параметры multisample в структуре DXGI_SAMPLE_DESC при вызове CreateSurface.
Моя игра отрисовывается с помощью многопоточной и (или) отложенной отрисовки. Что нужно знать для Direct3D 11?
Ознакомьтесь с введением в многопоточность в Direct3D 11 , чтобы приступить к работе. Список ключевых различий см. в разделе "Различия потоков между версиями Direct3D". Обратите внимание, что отложенная отрисовка использует отложенный контекст устройства вместо немедленного контекста.
Где можно узнать больше о программируемом конвейере с Direct3D 9?
Ознакомьтесь со следующими разделами:
Что следует использовать вместо формата X-файла для моих моделей?
Хотя у нас нет официальной замены формата X-файла, многие из примеров используют формат SDKMesh. Visual Studio также содержит конвейер содержимого, который компилирует несколько популярных форматов в файлы CMO, которые можно загрузить с кодом из начального комплекта Visual Studio 3D или загрузить с помощью DirectXTK.
Разделы справки отладка шейдеров?
Microsoft Visual Studio включает средства диагностики для графики DirectX. См. раздел "Отладка графики DirectX".
Что такое эквивалент Direct3D 11 для функции x?
См. сопоставление функций, предоставленное в функциях Map DirectX 9 с API DirectX 11.
Что такое DXGI\_FORMAT эквивалентно формату поверхности y?
См. сопоставление формата поверхности, предоставленное в функциях Map DirectX 9 с API DirectX 11.