我应该在哪里设置着色器代码中对应于“VkVertexInputBindingDescription.binding”在C++代码中设置的输入顶点绑定号?

问题描述 投票:0回答:1

我正在学习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以外的其他数字?

抱歉泳池英语。

glsl vulkan
1个回答
0
投票

顶点输入绑定不是你的着色器关心的东西。那是关于缓冲区与从该缓冲区馈送的顶点属性位置之间的关联。顶点着色器不关心那个映射;它只关心顶点属性位置。

什么情况下VkVertexInputBindingDescription的binding可以设置为1或者0以外的其他数字?

当您从多个缓冲区中获取顶点数据时。

© www.soinside.com 2019 - 2024. All rights reserved.