如何在Windows上使VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR生效?
Vulkan透明窗口相关问题
我调用vkGetPhysicalDeviceSurfaceCapabilitiesKHR后,发现supportedCompositeAlpha中始终未设置VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR位,确认该特性不被支持。我的运行环境是Windows 10,使用Vulkan 1.3及最新版本驱动。
之前找到过讨论Vulkan透明窗口的相关帖子,但发帖者没检查该标志位的支持情况。有用户指出问题可能和窗口创建方式有关,于是我尝试了以下代码:
hwnd_ = CreateWindowEx( WS_EX_LAYERED, name_.c_str(), window_title.c_str(), dwStyle, // | WS_CLIPSIBLINGS | WS_CLIPCHILDREN 0, 0, window_rect.right - window_rect.left, window_rect.bottom - window_rect.top, nullptr, nullptr, hinstance_, nullptr); if (!hwnd_) { std::cerr << "Can't create a window" << std::endl; return nullptr; } SetLayeredWindowAttributes(hwnd_, 0, 255, LWA_ALPHA); // for transparent surface
我使用了WS_EX_LAYERED扩展样式并调用SetLayeredWindowAttributes,按照认知这是创建可调透明度窗口的必要操作,但情况没有任何变化。
我现在有两个疑问:
- 原帖没有说明窗口创建过程中是否存在特定操作能让
VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR标志位被支持 - 不清楚Nvidia/AMD是否支持该特性,以及该从何处查询相关信息
另外我想知道:这个问题是由驱动导致还是窗口创建方式导致的?有没有人成功实现过Vulkan透明窗口?如果有,能否分享对应的Windows窗口创建代码?
内容的提问来源于stack exchange,提问作者user18490
相关产品推荐
相关产品推荐

