改进ShaderModuleManage::CreateShader返回值
This commit is contained in:
parent
dda6dec4e7
commit
066bc4952c
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user