如何创建和使用结构缓冲区?

时间:2018-01-25 09:29:03

标签: vulkan

Directx提供Structured Buffer。什么是vulkan的类比?如何在应用程序中创建一个?如何在glsl着色器中使用它?

1 个答案:

答案 0 :(得分:2)

如果该存储缓冲区是只读的,D3D“结构化缓冲区”对于Vulkan“存储缓冲区”是equivalent。但是,Vulkan(like OpenGL)使用存储缓冲区概念来涵盖D3D考虑不同内容的各种内容。

D3D中的RWStructuredBuffers只是您在着色器中声明为可写的存储缓冲区。 Append / ConsumeStructuredBuffers只是存储缓冲区,您可以在其中查找原子变量以查找着色器实例将“追加”或“消耗”的数据。

在Vulkan API级别,这些都使用VkBuffer设置的VK_BUFFER_USAGE_STORAGE_BUFFER_BIT。即使在描述符集中,也无需指定特定存储缓冲区绑定点是只读还是读/写,甚至是只写。如何使用它由着色器决定,而不是描述符。