From 066bc4952c8f4e46a23a211ce918c95a7f3364c0 Mon Sep 17 00:00:00 2001 From: HuYingzhuo Date: Sat, 27 Apr 2019 21:41:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9BShaderModuleManage::CreateSha?= =?UTF-8?q?der=E8=BF=94=E5=9B=9E=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/Vulkan/VKShaderModuleManage.cpp | 13 ++++++++----- example/Vulkan/VKShaderModuleManage.h | 6 +++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/example/Vulkan/VKShaderModuleManage.cpp b/example/Vulkan/VKShaderModuleManage.cpp index 51be222b..53801ebe 100644 --- a/example/Vulkan/VKShaderModuleManage.cpp +++ b/example/Vulkan/VKShaderModuleManage.cpp @@ -2,7 +2,7 @@ #include"VKShaderModule.h" VK_NAMESPACE_BEGIN -int ShaderModuleManage::CreateShader(const VkShaderStageFlagBits shader_stage_bit,const void *spv_data,const uint32_t spv_size) +const ShaderModule *ShaderModuleManage::CreateShader(const VkShaderStageFlagBits shader_stage_bit,const void *spv_data,const uint32_t spv_size) { VkPipelineShaderStageCreateInfo *shader_stage=new VkPipelineShaderStageCreateInfo; shader_stage->sType=VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; @@ -20,13 +20,15 @@ int ShaderModuleManage::CreateShader(const VkShaderStageFlagBits shader_stage_bi moduleCreateInfo.pCode=(const uint32_t *)spv_data; if(vkCreateShaderModule(device,&moduleCreateInfo,nullptr,&(shader_stage->module))!=VK_SUCCESS) - return(-1); + return(nullptr); ShaderModule *sm=new ShaderModule(shader_count,shader_stage); shader_list.Add(shader_count,sm); - return shader_count++; + ++shader_count; + + return sm; } const ShaderModule *ShaderModuleManage::GetShader(int id) @@ -42,12 +44,13 @@ const ShaderModule *ShaderModuleManage::GetShader(int id) bool ShaderModuleManage::ReleaseShader(const ShaderModule *const_sm) { - if(!const_sm)return; + if(!const_sm) + return(false); ShaderModule *sm; if(!shader_list.Get(const_sm->GetID(),sm)) - return nullptr; + return(false); if(sm!=const_sm) return(false); diff --git a/example/Vulkan/VKShaderModuleManage.h b/example/Vulkan/VKShaderModuleManage.h index e0fd776b..eea3365d 100644 --- a/example/Vulkan/VKShaderModuleManage.h +++ b/example/Vulkan/VKShaderModuleManage.h @@ -28,9 +28,9 @@ public: ~ShaderModuleManage(); - int CreateShader(const VkShaderStageFlagBits shader_stage_bit,const void *spv_data,const uint32_t spv_size); + const ShaderModule *CreateShader(const VkShaderStageFlagBits shader_stage_bit,const void *spv_data,const uint32_t spv_size); -#define ADD_SHADER_FUNC(sn,vk_name) int Create##sn##Shader(const void *spv_data,const uint32_t spv_size){return CreateShader(VK_SHADER_STAGE_##vk_name##_BIT,spv_data,spv_size);} +#define ADD_SHADER_FUNC(sn,vk_name) const ShaderModule *Create##sn##Shader(const void *spv_data,const uint32_t spv_size){return CreateShader(VK_SHADER_STAGE_##vk_name##_BIT,spv_data,spv_size);} ADD_SHADER_FUNC(Vertex, VERTEX) ADD_SHADER_FUNC(Fragment, FRAGMENT) ADD_SHADER_FUNC(Geometry, GEOMETRY) @@ -39,7 +39,7 @@ public: ADD_SHADER_FUNC(Compute, COMPUTE) #undef ADD_SHADER_FUNC -#define ADD_NV_SHADER_FUNC(sn,vk_name) int Create##sn##Shader(const void *spv_data,const uint32_t spv_size){return CreateShader(VK_SHADER_STAGE_##vk_name##_BIT_NV,spv_data,spv_size);} +#define ADD_NV_SHADER_FUNC(sn,vk_name) const ShaderModule *Create##sn##Shader(const void *spv_data,const uint32_t spv_size){return CreateShader(VK_SHADER_STAGE_##vk_name##_BIT_NV,spv_data,spv_size);} ADD_NV_SHADER_FUNC(Raygen, RAYGEN); ADD_NV_SHADER_FUNC(AnyHit, ANY_HIT); ADD_NV_SHADER_FUNC(ClosestHit, CLOSEST_HIT);