diff --git a/inc/hgl/graph/shader/ShaderResource.h b/inc/hgl/graph/shader/ShaderResource.h index d0c0a801..046d3f85 100644 --- a/inc/hgl/graph/shader/ShaderResource.h +++ b/inc/hgl/graph/shader/ShaderResource.h @@ -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) diff --git a/inc/hgl/graph/vulkan/VKShaderModule.h b/inc/hgl/graph/vulkan/VKShaderModule.h index 885a1015..d704d330 100644 --- a/inc/hgl/graph/vulkan/VKShaderModule.h +++ b/inc/hgl/graph/vulkan/VKShaderModule.h @@ -72,7 +72,8 @@ public: * 获取输入流绑定点,需要注意的时,这里获取的binding并非是shader中的binding/location,而是绑定顺序的序列号。对应vkCmdBindVertexBuffer的缓冲区序列号 */ 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;} diff --git a/src/SceneGraph/shader/ShaderResource.cpp b/src/SceneGraph/shader/ShaderResource.cpp index 184314df..1f59a7f4 100644 --- a/src/SceneGraph/shader/ShaderResource.cpp +++ b/src/SceneGraph/shader/ShaderResource.cpp @@ -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();