У меня есть игровое приложение, которое может переходить в полноэкранный режим и обратно в оконный режим при нажатии Alt-Enter. Однако, когда он переходит в полноэкранный режим, я получаю следующее предупреждение от DirectX:
DXGI Warning: IDXGISwapChain::Present: Fullscreen presentation inefficiencies incurred due to application not using IDXGISwapChain::ResizeBuffers appropriately, specifying a DXGI_MODE_DESC not available in IDXGIOutput::GetDisplayModeList, or not using DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH.
Я уже исключил две вторые возможности с помощью тестирования, поэтому я знаю, что единственными оставшимися причинами появления предупреждения являются либо неправильное использование IDXGISwapChain::ResizeBuffers, либо просто ошибка Windows. Поскольку я не могу отладить вторую возможность, я придерживаюсь проблемы ResizeBuffers. Чтобы отладить это, я хочу посмотреть, что происходит, когда Alt-Enter нажимается при переходе из оконного режима в полноэкранный. Однако приложение, похоже, не вызывает мой метод ResizeDXGIBuffers; на самом деле, кажется, что Alt-Enter где-то встроен в windows или DirectX, и я не знаю, как найти цепочку вызовов функций, которые срабатывают при его нажатии. РЕДАКТИРОВАТЬ: Когда мой метод помещается в обработчик WM_ACTIVATEAPP, он вызывается, но это не то, что я имел в виду. Если я уберу его из этого обработчика сообщений, окно ВСЕ ЕЩЕ перейдет в полноэкранный режим, хотя я не вызываю никаких функций, чтобы сделать окно полноэкранным. Таким образом, Alt+Enter должен автоматически вызывать какую-то внутреннюю функцию для этого.
Итак, вот мой вопрос: кто-нибудь знает, какая функция вызывается Windows и / или DirectX 11 при нажатии Alt-Enter?
РЕДАКТИРОВАТЬ: Как говорят теги для этого вопроса, я использую DirectX 11 на компьютере с Windows. В частности, Windows 7 64-разрядная.
РЕДАКТИРОВАТЬ 2: теперь я полностью съедаю нажатие клавиши Alt+Enter и вручную сохраняю состояние нажатия Alt+Enter, чтобы точно знать, что вызывается только мой код. Однако предупреждение, о котором я говорил выше, сохраняется. Я следую рекомендациям MSDN. тоже, так что я не знаю, что делать дальше.