ULRE/example/Vulkan/VKVertexInput.cpp

39 lines
1.0 KiB
C++
Raw Normal View History

#include"VKVertexInput.h"
VK_NAMESPACE_BEGIN
//struct VertexInputBuffer
//{
// //按API可以一个binding绑多个attrib但我们仅支持1v1
//
// VkVertexInputBindingDescription binding;
// VkVertexInputAttributeDescription attrib;
// Buffer *buf;
//};
bool VertexInput::Add(VertexBuffer *buf)
{
if(!buf)
return(false);
const int binding_index=vib_list.GetCount(); //参考opengl vab,binding_index必须从0开始紧密排列但是否必须这样待以后测试
VkVertexInputBindingDescription binding;
VkVertexInputAttributeDescription attrib;
binding.binding=binding_index;
binding.stride=buf->GetStride();
binding.inputRate=VK_VERTEX_INPUT_RATE_VERTEX; //还有一种是INSTANCE暂时未知
attrib.binding=binding_index;
attrib.location=0;
attrib.format=buf->GetFormat();
attrib.offset=0;
vib_list.Add(new VertexInputBuffer(binding,attrib,buf));
buf_list.Add(buf->GetBuffer());
return(true);
}
VK_NAMESPACE_END