首页 > 解决方案 > 创建启用所有支持的扩展/功能的 Vulkan 实例/设备

问题描述

在 Vulkan 中,在创建将要使用的一个vkInstancevkDevice所有扩展时,必须指定在实例/设备创建期间启用。同样,在创建vkDevice. 所以我的问题是,是否有任何真正的理由反对简单地启用所有可用的扩展/功能,类似于在 OpenGL 中如何始终启用所有扩展/功能并且应用程序只是查询它们的支持?我的意思是使用vkEnumerateInstanceExtensionProperties,vkEnumerateDeviceExtensionProperties和类似返回的所有扩展名。

我问是因为我认为启用所有可用的扩展/功能比使用不同的方法更简单,我想知道它是否较差,例如导致一些性能开销,只启用必需的(或可选使用的)功能/扩展。

标签: cgpuvulkan

解决方案


启用所有可用的扩展/功能比使用不同的方法更简单

有什么不同的做法?在实际使用指向它的函数指针之前,您仍然需要测试扩展是否存在,不是吗?

是否有任何真正的理由反对简单地启用所有可用的扩展/功能,类似于 [...] OpenGL

使用 Vulkan 的全部目的是您可以很好地控制与 GPU 接口的每一个细节。从扩展到是否创建深度缓冲区,再到显式多线程和多设备同步,完全取决于您使用您需要的东西,仅此而已。

如果您喜欢更轻松的旅程,那么没有什么可以阻止您使用 OpenGL,尤其是如果您不会多走一英里(或者说 10 英里)。在 OpenGL 中编写高性能应用程序比编写性能中等的 Vulkan 应用程序要容易得多。


推荐阅读