在ShaderStage结构中保存原始的数据基本类型与成份数量

This commit is contained in:
hyzboy 2020-07-11 16:49:17 +08:00
parent 967c66569b
commit b4dcd029f9
3 changed files with 13 additions and 7 deletions

View File

@ -9,7 +9,10 @@ VK_NAMESPACE_BEGIN
{
AnsiString name;
uint location;
uint base_type;
uint component;
VkFormat format;
};//struct ShaderStage
@ -61,8 +64,11 @@ VK_NAMESPACE_BEGIN
ShaderStageList &GetStageInputs(){return stage_inputs;}
ShaderStageList &GetStageOutputs(){return stage_outputs;}
const ShaderStage *GetStage(const AnsiString &)const;
const int GetStageInputBinding(const AnsiString &)const;
const uint GetStageInputCount()const{return stage_inputs.GetCount();}
const uint GetStageOutputCount()const{return stage_outputs.GetCount();}
const ShaderStage * GetStageInput (const AnsiString &)const;
const int GetStageInputBinding(const AnsiString &)const;
const ShaderDescriptorList *GetDescriptorList()const{return descriptor_list;}
ShaderDescriptorList *GetDescriptorList(VkDescriptorType desc_type)

View File

@ -72,7 +72,8 @@ public:
* binding并非是shader中的binding/locationvkCmdBindVertexBuffer的缓冲区序列号
*/
const int GetStageInputBinding(const AnsiString &name)const{return shader_resource->GetStageInputBinding(name);}
const ShaderStage * GetStage(const AnsiString &name)const{return shader_resource->GetStage(name);}
const ShaderStage * GetStageInput(const AnsiString &name)const{return shader_resource->GetStageInput(name);}
const uint GetStageInputCount()const{return shader_resource->GetStageInputCount();}
const uint32_t GetAttrCount()const{return attr_count;}

View File

@ -27,7 +27,6 @@ VK_NAMESPACE_BEGIN
const uint32 total_bytes=AccessByPointer(data,uint32);
int basetype;
int str_len;
ShaderStage *ss;
@ -37,10 +36,10 @@ VK_NAMESPACE_BEGIN
ss=new ShaderStage;
ss->location=*data++;
basetype=*data++;
ss->base_type=*data++;
ss->component=*data++;
ss->format=VK_NAMESPACE::GetVulkanFormat(basetype,ss->component);
ss->format=VK_NAMESPACE::GetVulkanFormat(ss->base_type,ss->component);
str_len=*data++;
ss->name.SetString((char *)data,str_len);
@ -85,7 +84,7 @@ VK_NAMESPACE_BEGIN
delete[] data;
}
const ShaderStage *ShaderResource::GetStage(const AnsiString &name) const
const ShaderStage *ShaderResource::GetStageInput(const AnsiString &name) const
{
const int count=stage_inputs.GetCount();
ShaderStage **ss=stage_inputs.GetData();