You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:58:13