VKRenderable and CommandBufferRender supported newly VertexInputLayout

This commit is contained in:
2023-05-04 19:11:18 +08:00
parent 6bdbf87446
commit 7031270476
9 changed files with 87 additions and 67 deletions

View File

@@ -55,7 +55,7 @@ public:
const UTF8String & GetName ()const{return data->name;}
const VertexInput * GetVertexInput ()const{return data->vertex_input;}
// const VertexInput * GetVertexInput ()const{return data->vertex_input;}
const ShaderStageCreateInfoList & GetStageList ()const{return data->shader_stage_list;}

View File

@@ -7,22 +7,27 @@
#include<hgl/graph/VKMaterial.h>
#include<hgl/graph/VKMaterialParameters.h>
#include<hgl/graph/VKMaterialInstance.h>
#include<hgl/graph/VertexAttrib.h>
VK_NAMESPACE_BEGIN
struct VertexInputData
{
uint32_t count;
const char **name_list;
const VkVertexInputBindingDescription *bind_list;
const VkVertexInputAttributeDescription *attr_list;
uint32_t first_binding;
uint32_t binding_count;
VkBuffer *buffer_list;
VkDeviceSize *buffer_offset;
};
struct VertexInputDataGroup
{
const VIL *vil;
VertexInputData vid[size_t(VertexInputGroup::RANGE_SIZE)];
public:
VertexInputData(const VIL *vil);
~VertexInputData();
VertexInputDataGroup(const VIL *);
~VertexInputDataGroup();
};
/**
@@ -34,15 +39,13 @@ class Renderable
MaterialInstance * mat_inst;
Primitive * primitive;
VertexInputData * vertex_input_data;
uint32_t buffer_hash;
VertexInputDataGroup *vid_group;
private:
friend Renderable *CreateRenderable(Primitive *,MaterialInstance *,Pipeline *);
Renderable(Primitive *,MaterialInstance *,Pipeline *,VertexInputData *);
Renderable(Primitive *,MaterialInstance *,Pipeline *,VertexInputDataGroup *);
public:
@@ -57,14 +60,17 @@ public:
Primitive * GetPrimitive (){return primitive;}
const AABB & GetBoundingBox ()const{return primitive->GetBoundingBox();}
const VertexInputData * GetVertexInputData ()const{return vertex_input_data;}
const VertexInputData * GetVertexInputData (const VertexInputGroup &vig)const
{
RANGE_CHECK_RETURN_NULLPTR(vig)
return vid_group->vid+size_t(vig);
}
IndexBuffer * GetIndexBuffer ()const{return primitive->GetIndexBuffer();}
const uint32_t GetIndexBufferOffset()const{return primitive->GetIndexBufferOffset();}
const uint32_t GetDrawCount ()const{return primitive->GetDrawCount();}
const uint32_t GetBufferHash ()const{return buffer_hash;}
MaterialParameters *GetMP (const DescriptorSetType &type){return mat_inst->GetMP(type);}
public: //instance support

View File

@@ -37,9 +37,9 @@ namespace hgl
}
const VkFormat GetVulkanFormat ()const{return vk_format;} ///<取得数据类型
const uint32_t GetVecSize ()const{return vec_size;} ///<取数缓冲区元数据成份数量
// const uint32_t GetVecSize ()const{return vec_size;} ///<取数缓冲区元数据成份数量
const uint32_t GetCount ()const{return count;} ///<取得数据数量
const uint32_t GetStride ()const{return stride;} ///<取得每一组数据字节数
// const uint32_t GetStride ()const{return stride;} ///<取得每一组数据字节数
void * GetData ()const{return mem_data;} ///<取得数据指针
const uint32_t GetTotalBytes ()const{return total_bytes;} ///<取得数据字节数
};//class VertexAttribData