一种监听窗口模式的方法更改了WndProc



当我的游戏从窗口切换到全屏时,我想刷新我的交换链,反之亦然,目前我只找到了uMsg==WM_SIZE,但它不是最佳的,不幸的是,全屏切换到无边界不起作用。。。。还有其他信息吗?感谢

对于"全屏";与";加窗的";使用DXGI处理时,有两种基本方法:

  1. 让DXGI通过DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH为您完成。

  2. 使用标志DXGI_MWA_NO_WINDOW_CHANGES并自行处理。事实上,您确实使用WM_SIZE来确定更改。您可能还想使用DXGI_MWA_NO_ALT_ENTER并在WndProc中处理ALT+ENTER快捷键。

请参阅Microsoft文档:DirectX图形基础结构(DXGI(最佳实践。

对于窗口模式,WM_SIZE的一个挑战是,随着"橡皮筋"矩形的调整,您会收到很多这样的消息,而调整后缓冲区的大小并没有那么快。这里的一个解决方案是使用WM_ENTERSIZEMOVEWM_EXITSIZEMOVE,这样您就可以暂停调整大小,直到它完成。

有关WndProc的详细实现,请参阅GitHub。

最后一点:"全屏"实际上有几个定义。请参阅此博客文章。

相关内容

  • 没有找到相关文章

最新更新