如何创建和使用结构缓冲区?
How to create and use buffer of structs?
Directx 提供 Structured Buffer。 vulkan 中的类似物是什么?如何在应用程序中创建一个?如何在glsl着色器中使用它?
D3D "Structured Buffer" 是 equivalent to a Vulkan "Storage Buffer", if that storage buffer is read-only. However, Vulkan (like OpenGL) 使用存储缓冲区概念来涵盖 D3D 考虑不同事物的广泛内容。
D3D 中的 RWStructuredBuffers 只是您在着色器中声明为可写的存储缓冲区。 Append/ConsumeStructuredBuffers 只是存储缓冲区,您可以在其中碰撞原子变量以查找着色器实例将要 "append" 或 "consume".
的数据
在 Vulkan API 级别,这些都使用具有 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
集的 VkBuffer
。即使在描述符集中,您也不需要指定特定存储缓冲区绑定点是只读还是 read/write,甚至是只写。它的使用方式由着色器决定,而不是描述符。
Directx 提供 Structured Buffer。 vulkan 中的类似物是什么?如何在应用程序中创建一个?如何在glsl着色器中使用它?
D3D "Structured Buffer" 是 equivalent to a Vulkan "Storage Buffer", if that storage buffer is read-only. However, Vulkan (like OpenGL) 使用存储缓冲区概念来涵盖 D3D 考虑不同事物的广泛内容。
D3D 中的 RWStructuredBuffers 只是您在着色器中声明为可写的存储缓冲区。 Append/ConsumeStructuredBuffers 只是存储缓冲区,您可以在其中碰撞原子变量以查找着色器实例将要 "append" 或 "consume".
的数据在 Vulkan API 级别,这些都使用具有 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
集的 VkBuffer
。即使在描述符集中,您也不需要指定特定存储缓冲区绑定点是只读还是 read/write,甚至是只写。它的使用方式由着色器决定,而不是描述符。