我有一個遊戲應用程序,當按下Alt-Enter鍵時,它可以全屏顯示並返回窗口。然而,當它進入全屏,我是從的DirectX收到以下警告:按下Alt-Enter鍵時會調用什麼函數?
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必須自動調用一些內部函數來執行此操作。
所以這是我的問題:有人知道當按下Alt-Enter鍵時,Windows和/或DirectX 11會調用哪個函數嗎?
編輯:作爲這個問題的標籤說,我在Windows機器上使用DirectX 11。具體來說,Windows 7 64位。
編輯2:我現在完全吃掉了Alt + Enter鍵盤,並且手動存儲了被按下的Alt + Enter的狀態,這樣我就知道只有我的代碼被調用了。但是,我上面提到的警告仍然存在。我也跟着MSDN best practices,所以我不知道該從哪裏出發。
http://msdn.microsoft.com/en-us/library/windows/desktop/ee417025%28v=vs.85%29.aspx#Full_Screen_Issues – 2012-01-10 21:14:02