改进ShaderModuleManage::CreateShader返回值
This commit is contained in:
parent
dda6dec4e7
commit
066bc4952c
@ -2,7 +2,7 @@
|
|||||||
#include"VKShaderModule.h"
|
#include"VKShaderModule.h"
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
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;
|
VkPipelineShaderStageCreateInfo *shader_stage=new VkPipelineShaderStageCreateInfo;
|
||||||
shader_stage->sType=VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
|
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;
|
moduleCreateInfo.pCode=(const uint32_t *)spv_data;
|
||||||
|
|
||||||
if(vkCreateShaderModule(device,&moduleCreateInfo,nullptr,&(shader_stage->module))!=VK_SUCCESS)
|
if(vkCreateShaderModule(device,&moduleCreateInfo,nullptr,&(shader_stage->module))!=VK_SUCCESS)
|
||||||
return(-1);
|
return(nullptr);
|
||||||
|
|
||||||
ShaderModule *sm=new ShaderModule(shader_count,shader_stage);
|
ShaderModule *sm=new ShaderModule(shader_count,shader_stage);
|
||||||
|
|
||||||
shader_list.Add(shader_count,sm);
|
shader_list.Add(shader_count,sm);
|
||||||
|
|
||||||
return shader_count++;
|
++shader_count;
|
||||||
|
|
||||||
|
return sm;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ShaderModule *ShaderModuleManage::GetShader(int id)
|
const ShaderModule *ShaderModuleManage::GetShader(int id)
|
||||||
@ -42,12 +44,13 @@ const ShaderModule *ShaderModuleManage::GetShader(int id)
|
|||||||
|
|
||||||
bool ShaderModuleManage::ReleaseShader(const ShaderModule *const_sm)
|
bool ShaderModuleManage::ReleaseShader(const ShaderModule *const_sm)
|
||||||
{
|
{
|
||||||
if(!const_sm)return;
|
if(!const_sm)
|
||||||
|
return(false);
|
||||||
|
|
||||||
ShaderModule *sm;
|
ShaderModule *sm;
|
||||||
|
|
||||||
if(!shader_list.Get(const_sm->GetID(),sm))
|
if(!shader_list.Get(const_sm->GetID(),sm))
|
||||||
return nullptr;
|
return(false);
|
||||||
|
|
||||||
if(sm!=const_sm)
|
if(sm!=const_sm)
|
||||||
return(false);
|
return(false);
|
||||||
|
@ -28,9 +28,9 @@ public:
|
|||||||
|
|
||||||
~ShaderModuleManage();
|
~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(Vertex, VERTEX)
|
||||||
ADD_SHADER_FUNC(Fragment, FRAGMENT)
|
ADD_SHADER_FUNC(Fragment, FRAGMENT)
|
||||||
ADD_SHADER_FUNC(Geometry, GEOMETRY)
|
ADD_SHADER_FUNC(Geometry, GEOMETRY)
|
||||||
@ -39,7 +39,7 @@ public:
|
|||||||
ADD_SHADER_FUNC(Compute, COMPUTE)
|
ADD_SHADER_FUNC(Compute, COMPUTE)
|
||||||
#undef ADD_SHADER_FUNC
|
#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(Raygen, RAYGEN);
|
||||||
ADD_NV_SHADER_FUNC(AnyHit, ANY_HIT);
|
ADD_NV_SHADER_FUNC(AnyHit, ANY_HIT);
|
||||||
ADD_NV_SHADER_FUNC(ClosestHit, CLOSEST_HIT);
|
ADD_NV_SHADER_FUNC(ClosestHit, CLOSEST_HIT);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user