#ifndef HGL_GRAPH_VULKAN_SHADER_RESOURCE_INCLUDE #define HGL_GRAPH_VULKAN_SHADER_RESOURCE_INCLUDE #include #include #include #include #include VK_NAMESPACE_BEGIN class ShaderResource { VkShaderStageFlagBits stage_flag; const void *spv_data; uint32 spv_size; ShaderStageList stage_inputs; // ShaderStageList stage_outputs; public: ShaderResource(const VkShaderStageFlagBits &,const void *,const uint32); virtual ~ShaderResource()=default; const VkShaderStageFlagBits GetStage ()const {return stage_flag;} const char * GetStageName ()const {return GetShaderStageName(stage_flag);} const uint32_t * GetCode ()const {return (uint32_t *)spv_data;} const uint32_t GetCodeSize ()const {return spv_size;} ShaderStageList & GetStageInputs () {return stage_inputs;} // ShaderStageList & GetStageOutputs () {return stage_outputs;} 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; };//class ShaderResource struct ShaderModuleCreateInfo:public vkstruct_flag { public: ShaderModuleCreateInfo(ShaderResource *sr) { codeSize=sr->GetCodeSize(); pCode =sr->GetCode(); } };//struct ShaderModuleCreateInfo VK_NAMESPACE_END #endif//HGL_GRAPH_VULKAN_SHADER_RESOURCE_INCLUDE