c - 创建启用所有支持的扩展/功能的 Vulkan 实例/设备
问题描述
在 Vulkan 中,在创建将要使用的一个vkInstance
或vkDevice
所有扩展时,必须指定在实例/设备创建期间启用。同样,在创建vkDevice
. 所以我的问题是,是否有任何真正的理由反对简单地启用所有可用的扩展/功能,类似于在 OpenGL 中如何始终启用所有扩展/功能并且应用程序只是查询它们的支持?我的意思是使用vkEnumerateInstanceExtensionProperties
,vkEnumerateDeviceExtensionProperties
和类似返回的所有扩展名。
我问是因为我认为启用所有可用的扩展/功能比使用不同的方法更简单,我想知道它是否较差,例如导致一些性能开销,只启用必需的(或可选使用的)功能/扩展。
解决方案
启用所有可用的扩展/功能比使用不同的方法更简单
有什么不同的做法?在实际使用指向它的函数指针之前,您仍然需要测试扩展是否存在,不是吗?
是否有任何真正的理由反对简单地启用所有可用的扩展/功能,类似于 [...] OpenGL
使用 Vulkan 的全部目的是您可以很好地控制与 GPU 接口的每一个细节。从扩展到是否创建深度缓冲区,再到显式多线程和多设备同步,完全取决于您使用您需要的东西,仅此而已。
如果您喜欢更轻松的旅程,那么没有什么可以阻止您使用 OpenGL,尤其是如果您不会多走一英里(或者说 10 英里)。在 OpenGL 中编写高性能应用程序比编写性能中等的 Vulkan 应用程序要容易得多。
推荐阅读
- python-3.x - 我在安装操作时收到代码 1 错误
- swift - 如何使用完成处理程序在核心数据swift 5中获取过滤器数据结果
- express - 在 mongoose hook 'post save' 中调用函数返回相同的文档
- java - 如何在 libgdx 中扔一个圆圈,比如 ketchapp 的 hop hop hop 或 circle game
- jquery - 如何使用 jQuery 在单选按钮上添加内容开关?
- c# - 如果值在 c# 中具有白色/空格,则不会触发 Setter
- react-native - 如何在发送 otp 之前检查用户是否已经使用电话号码注册
- angularjs - 如何在AngularJS中使用limitTo过滤多维数组
- sql-server - 如何防止特定用户访问我的 SQL 数据库中的特定表?
- javascript - 当我想访问对象详细信息时,React JS 抛出“TypeError:无法读取未定义的属性‘名称’”错误