| Предыдущий | Следующий |
| DXGI_STATUS_MODE_CHANGED | DXGI_STATUS_UNOCCLUDED |
DXGI_STATUS_MODE_CHANGE_IN_PROGRESS
Что означает DXGI_STATUS_MODE_CHANGE_IN_PROGRESS
DXGI_STATUS_MODE_CHANGE_IN_PROGRESS (0x087A0008) означает, что приложение вызвало IDXGISwapChain::ResizeTarget или IDXGISwapChain::SetFullscreenState, пока переход между оконным и полноэкранным режимом уже выполнялся. Microsoft описывает этот результат именно как состояние перехода, а не как повреждение swap chain.
Что проверить
- Запишите, какой из двух методов вернул статус, запрошенное fullscreen/windowed состояние и текущий output. Это позволяет отличить конкурирующий mode switch от обычного
Present. - Проверьте, не запускают ли два обработчика одновременно
SetFullscreenState/ResizeTarget, например обработчик окна, пользовательская команда и код реакции на display change. - Не пересоздавайте device только из-за этого статуса. Сначала дождитесь завершения текущего mode transition и заново считайте фактическое состояние swap chain.
Как исправить
Сериализуйте операции смены режима и повторяйте запрос только после завершения предыдущего перехода. Если после этого меняется desktop режим дисплея, отдельно обработайте DXGI_STATUS_MODE_CHANGED и при необходимости согласуйте buffers с новым режимом.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.