窗口调整大小时未触发VK_ERROR_OUT_OF_DATE_KHR错误的问题求助
窗口调整大小时未触发VK_ERROR_OUT_OF_DATE_KHR错误的问题求助
我自己基于Win32实现了窗口,搭配Vulkan做渲染,最近写了个测试函数用来调整窗口大小,但遇到了个头疼的问题——窗口尺寸改了之后,完全没触发VK_ERROR_OUT_OF_DATE_KHR错误。
先贴一下我的测试函数代码:
void Window::Test() { RECT rect = { 0, 0, 1200, 1200 }; DWORD style = WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | CS_OWNDC | WS_MAXIMIZEBOX; DWORD exStyle = WS_EX_APPWINDOW | WS_EX_TOPMOST; AdjustWindowRectExForDpi(&rect, style, false, exStyle, GetDpiForWindow(windowHandle)); SetWindowPos(windowHandle, HWND_TOPMOST, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, SWP_FRAMECHANGED | SWP_NOOWNERZORDER); }
我本来的预期是,窗口大小变化后,Vulkan的交换链会因为不再匹配当前窗口尺寸而抛出VK_ERROR_OUT_OF_DATE_KHR,这样我就能捕获这个错误,重新创建适配新尺寸的交换链。但现在实际情况是,错误没触发,渲染还在继续,画面已经明显拉伸变形了,完全不符合预期。
有没有大佬能帮我排查下问题?比如是不是我的Win32窗口调整代码哪里没处理到位,或者Vulkan交换链的初始化、帧循环里有什么遗漏的设置?
内容来源于stack exchange
相关产品推荐
相关产品推荐

