Vulkan实战
文章平均质量分 92
三哥编程分享
这个作者很懒,什么都没留下…
展开
-
Vulkan实战之Window surface
之后,可以使用vkCreateWin32SurfaceKHR创建surface,其中包括实例的参数,surface创建细节,自定义分配器和surface句柄要存储的变量。从技术上讲,这是一个WSI扩展函数,但它是如此常用,以至于标准的Vulkan加载程序包含它,因此与其他扩展不同,您不需要显式加载它。由于演示是一个特定于队列的特性,因此问题实际上是找到一个支持向我们创建的surface演示的队列族。注意,很有可能这些队列最终是相同的队列族,但在整个程序中,我们将把它们视为统一方法的单独队列。原创 2023-05-02 14:49:29 · 1240 阅读 · 0 评论 -
Vulkan实战之逻辑设备和队列
在选择要使用的物理设备之后,我们需要设置一个逻辑设备来与它接口。逻辑设备创建过程类似于实例创建过程,并描述了我们想要使用的特性。在查询了哪些队列族可用之后,我们还需要指定要创建哪些队列。如果您有不同的需求,甚至可以从同一个物理设备创建多个逻辑设备。首先添加一个新的类成员来存储逻辑设备句柄。接下来,添加一个从initVulkan调用的createLogicalDevice函数。原创 2023-05-02 13:58:17 · 981 阅读 · 0 评论 -
Vulkan实战之验证层
这个想法是,实例层只检查与全局Vulkan对象(如实例)相关的调用,而设备特定层只检查与特定GPU相关的调用。Vulkan API是围绕最小化驱动程序开销的想法设计的,该目标的表现之一是默认情况下API中的错误检查非常有限。除了VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT之外,我在这里指定了所有类型来接收有关可能问题的通知,同时省略了详细的一般调试信息。也许有些令人惊讶的是,即使是Vulkan中的调试回调也是用一个需要显式创建和销毁的句柄来管理的。原创 2023-05-02 11:10:24 · 1734 阅读 · 0 评论 -
Vulkan实战之Instance
它还有一个可选的第一个参数,允许我们通过特定的验证层过滤扩展,现在我们将忽略它。Vulkan中的许多信息都是通过结构体而不是函数参数传递的,我们必须再填写一个结构体来为创建实例提供足够的信息。这些数据在技术上是可选的,但它可能为驱动程序提供一些有用的信息,以便优化我们的特定应用程序(例如,因为它使用了具有某些特殊行为的知名图形引擎)。正如前一章所提到的,Vulkan中的分配和释放函数有一个可选的allocator回调,我们将通过传递nullptr来忽略它。接下来的两层指定所需的全局扩展。原创 2023-05-01 11:36:36 · 1122 阅读 · 0 评论