如果扩展是核心扩展,我如何检查 Vulkan 代码?

问题描述

我想知道是否有任何方法可以检查硬件支持的扩展是否为核心扩展?核心扩展是否总是在受支持的扩展中返回?我问是因为我用于检查是否支持我想要的所有扩展的代码是复制这些扩展的数组进行设置,删除支持的扩展列表中的所有扩展并检查 set 是否为空。当扩展是核心扩展并且未在受支持的扩展中列出时,会不会出现任何情况,从而使我检查非空的设置?

解决方法

您需要在创建实例时指定您在 VkApplicationInfo::apiVersion 中使用的 Vulkan 版本。此 API 版本准确指定了您获得的核心 API。除此之外,扩展中有可用的功能,这些功能在运行时在“可用扩展”中列出,并且必须在运行时在“启用的扩展”中请求。没有特殊的扩展子类别。

某些作为旧核心 API 扩展的功能已提升为新版本的核心 API,但正如我所说,您需要在 apiVersion 中设置您的核心 API 版本,所以这不是' t 相关。