Vulkan 和透明窗口

Fel*_* K. 4 vulkan

我目前正在使我的个人引擎适应 Vulkan,并且我想重新实现透明窗口,我已经在 OpenGL 中实现了这一点。

我认为我需要做的就是选择正确的颜色格式(带有 alpha 通道)并将compositeAlpha属性设置VkSwapchainCreateInfoKHRVK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR

然而,用完全透明的颜色清除窗口并不能提供预期的结果。它是完全不透明的。

当然,我的窗口系统(自从我拥有 OpenGL 以来没有改变)支持它,当我只是禁用渲染时,我也无法在窗口的假定位置点击,这告诉我它在那里。

是否有任何其他必要的更改来使这项工作?

一些信息

图像格式是VK_FORMAT_B8G8R8A8_UNORM我在Sascha Willems 示例中找到的 vulkan 设置。

krO*_*oze 5

该功能(与大多数其他功能一样)在使用之前必须查询是否受支持。否则无效。

此特定功能由vkGetPhysicalDeviceSurfaceCapabilitiesKHRas查询pSurfaceCapabilities->supportedCompositeAlpha。它是位域/标志集,因此可以支持多种模式或不支持。

我认为结果/功能支持可能会受到 VkSurface 的影响。也就是说,平台窗口是如何创建的。或者也许驱动程序制造商还没有实现它(尽管该功能是可支持的)。

由于它之前在 OGL 中对您有用,因此后者更有可能。但是玩平台窗口创建参数并不会受到伤害......