#ifndef HGL_GRAPH_VULKAN_VERTEX_INPUT_INCLUDE
#define HGL_GRAPH_VULKAN_VERTEX_INPUT_INCLUDE
#include"VK.h"
#include"VKBuffer.h"
VK_NAMESPACE_BEGIN
/**
* 顶点输入配置,类似于OpenGL的VAB
* 注:本引擎不支持一个BUFFER中包括多种数据
*/
class VertexInput
{
struct VertexInputBuffer
{
//按API,可以一个binding绑多个attrib,但我们仅支持1v1
VkVertexInputBindingDescription binding;
VkVertexInputAttributeDescription attrib;
VertexBuffer *buffer;
public:
VertexInputBuffer(VkVertexInputBindingDescription bind,VkVertexInputAttributeDescription attr,VertexBuffer *buf)
{
binding=bind;
attrib=attr;
buffer=buf;
}
};
ObjectList vib_list;
List buf_list;
public:
VertexInput()=default;
virtual ~VertexInput()=default;
bool Add(VertexBuffer *,bool instance=false);
public:
const List &GetBufferList()const{return buf_list;}
};//class VertexInput
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_VERTEX_INPUT_INCLUDE