Vulkan创建缓冲区视图

创建缓冲区视图
当想要将一个缓冲区作为统一纹素缓冲区或纹素存储缓冲区时,需要创建缓冲区视图。

具体处理过程

(1)获取用于创建缓冲区的逻辑设备的句柄,将该句柄存储在一个VkDevice类型的变量中,将该变量命名为logical_device。
(2)获取已创建缓冲区的句柄,将该句柄存储在一个VkBuffer类型的变量中,将该变量命名为buffer。
(3)选择缓冲区视图的格式(解析缓冲区内容的方式),将该格式赋予一个VkFormat类型的变量,将该变量命名为format。
(4)从缓冲区中选择一部分需要创建视图的内存。设置这部分内存的起点(与整个缓冲区起点的距离),将这个偏移量存储到一个VkDeviceSize类型的变量中,将该变量命名为memory_offset。使用一个VkDeviceSize类型的变量定义这部分内存的尺寸,将该变量命名为memory_range。
(5)创建一个VkBufferViewCreateInfo类型的变量,将其命名为buffer_view_create_info。使用下列值初始化该变量中的各个成员。
● 将VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO赋予sType成员。
● 将nullptr赋予pNext成员。
● 将0赋予flags成员。
● 将buffer变量的值赋予buffer成员。
● 将format变量的值赋予format成员。
● 将memory_offset变量的值赋予offset成员。
● 将memory_range变量的值赋予range成员。
(6)创建一个VkBufferView类型的变量,将其命名为buffer_view,该变量用于存储缓冲区视图的句柄。
(7)调用vkCreateBufferView(logical_device,&buffer_view_create_info,nullptr,&buffer_view)函数。将第一个参数设置为逻辑设备的句柄;将第二个参数设置为指向buffer_view_create_info变量的指针;将第三个参数设置为nullptr;将第四个参数设置为指向buffer_view变量的指针。
(8)通过查明该函数调用操作的返回值等于VK_SUCCESS,确认该函数调用操作成功完成。

具体运行情况

在创建缓冲区视图时,最重要的事情是选择视图的格式和选择创建视图的缓冲区组成部分。这样就可以在着色器中,通过与图像(纹理)类似的方式解析缓冲区的内容。下面的代码定义了这些参数。

Vulkan创建缓冲区视图
Vulkan创建缓冲区视图

使用设定好的参数创建缓冲区。
Vulkan创建缓冲区视图

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!

 

Vulkan实战