前言
- 本文是《Vulkan 应用开发指南》的笔记,以及一些用法补充(我现在也只是跟着书码了一遍,额外查了一些操作方法)
- 这篇文章是Vulkan的“主要元素和部分特性”,之后会有“有一定完成度的渲染管线” 和 “PhysX接入” 计划是三篇文章。(因为剔除、抗锯齿、后处理等等也是“大量借鉴”,不会详细写。想要有一定完成度还挺花时间的,或许会有Content部分,但我其实不太想花时间搞,或许会有个简单的场景目录)
正文
正文分两部分:构建主要元素、一些具体操作
Vulkan 主要元素
主要是针对Vulkan的类,其他库内容略
1. VkInstance 和 VkPhysicalDevice
Vulkan程序需要创建一个VkInstance来启用vulkan API.在创建Instance时你需要准确的描述你的应用程序的一些属性,以及你需要使用的各种API。在创建Instance之后,你需要查询硬件对vulkan的支持,并选择一个或者多个VkPhysicalDevices。
2. VkDevice 和 VkQueue
在决定使用哪块显卡之后,你需要创建一个VkDevice (logical device),在创建过程中你还要更详细的描述你用到的硬件特性(VkPhysicalDeviceFeatures)。
大部分Vulkan操作, 比如绘制命令和内存/显存操作, 都需要通过提交到VkQueue之后异步执行。Queue是从queue family分配的,每个queue family中的Queue只支持某个特定集合的操作
比如:创建 graphics Queue 提交渲染指令,创建 present Queue 用来请求呈现图像
3. VkSurfaceKHR 和 VkSwapchainKHR
Surface是一个