如何确定一个给定的'VkInstance'是用什么示例扩展创建的?

7fyelxc5  于 2023-01-12  发布在  其他
关注(0)|答案(1)|浏览(116)

我管理的VkInstance是由其他库创建的(并且仍然归其他库所有)。我需要知道为用于创建VkInstanceVkInstanceCreateInfo提供了哪些示例扩展名。因为我没有创建VkInstance,所以我无法直接访问VkInstanceCreateInfo::ppEnabledExtensionNames字段。
给定一个特定的VkInstance句柄,我怎样才能知道为创建它的vkCreateInstance调用提供了什么扩展名?
请注意,这个问题 * 不是 * 关于当前Vulkan实现上 * 可用 * 的示例扩展;我想知道一个特定的VkInstance是用什么 * 创建 * 的。

nxowjjhe

nxowjjhe1#

一般来说,如果应用程序向Vulkan提供数据来执行某项操作,Vulkan不会为应用程序提供要求返回某些数据的方法。假设应用程序向Vulkan提供数据,并且这些数据对应用程序很重要,则应用程序应该自行“存储"这些数据。
在您的例子中,“应用程序”分为两个部分。一个部分创建某个Vulkan对象。另一个部分希望与该对象交互,但除了接收Vulkan对象之外,无法与第一个部分交互。从Vulkan的Angular 来看,这是“应用程序”的问题,而不是Vulkan的问题。
所以,它没有提供任何机制来帮助你。
这就是为什么当GLFW添加Vulkan支持时,他们没有让GLFW创建Vulkan示例,而是告诉 * 您 * GLFW需要您在创建 * 您的 * 示例时请求哪些扩展和特性。
所以这才是正确的处理方法:每个有兴趣与Vulkan示例交互的人 * 也 * 需要在其创建过程中拥有发言权。如果另一个库指派您管理示例,而没有告诉您任何有关其创建方式的信息,则该库与您的代码之间存在通信问题。

相关问题