我正在学习vulkan。我尝试在顶点着色器中设置输入顶点的绑定数量,如统一缓冲区。
//c++ use vulkan.hpp
vk::VertexInputBindingDescription binding;
binding.setBinding(0)
.setInputRate(vk::VertexInputRate::eVertex)
.setStride(sizeof(Vertex));
//shader
layout(location = 0, binding = 0) in vec3 position;
但是我在编译的时候得到了这个错误。
'binding' : requires uniform or buffer storage qualifier
'binding' : requires block, or sampler/image, or atomic-counter type
如果我不在着色器代码中设置绑定,它工作正常。
我应该在哪里设置着色器代码中对应于“VkVertexInputBindingDescription.binding”在C++代码中设置的输入顶点绑定号? 另外,什么情况下VkVertexInputBindingDescription的binding可以设置为1或者0以外的其他数字?
抱歉泳池英语。
顶点输入绑定不是你的着色器关心的东西。那是关于缓冲区与从该缓冲区馈送的顶点属性位置之间的关联。顶点着色器不关心那个映射;它只关心顶点属性位置。
什么情况下VkVertexInputBindingDescription的binding可以设置为1或者0以外的其他数字?
当您从多个缓冲区中获取顶点数据时。