upgrade VKPipeline.cpp/.h

This commit is contained in:
hyzboy 2020-09-19 14:58:54 +08:00
parent 5eb81f0abb
commit 07894d73e4
5 changed files with 16 additions and 13 deletions

2
CMCore

@ -1 +1 @@
Subproject commit 2aadf9005ca099d8c72f745c547d610022a79d0b
Subproject commit 3e9b703ebcdf4167707d76b6bbdb752eb63de437

@ -1 +1 @@
Subproject commit 86b124547d03bc221c3f87f7af66794da42fec15
Subproject commit 51d8086c98b5efeacdf07b3e2f1b5097bc401150

View File

@ -86,7 +86,7 @@ private:
bool InitPipeline()
{
vulkan::VKPipelineData pd;
vulkan::PipelineData pd;
if(!vulkan::LoadFromFile(OS_TEXT("res/pipeline/sky.pipeline"),&pd))
return(false);

View File

@ -9,21 +9,24 @@ class Pipeline
{
VkDevice device;
VkPipeline pipeline;
PipelineData *data;
bool alpha_test;
bool alpha_blend;
public:
Pipeline(VkDevice dev,VkPipeline p,bool at,bool ab):device(dev),pipeline(p),alpha_test(at),alpha_blend(ab){}
Pipeline(VkDevice dev,VkPipeline p,PipelineData *pd):device(dev),pipeline(p),data(pd){}
virtual ~Pipeline();
operator VkPipeline(){return pipeline;}
const bool IsAlphaTest()const{return alpha_test;}
const bool IsAlphaBlend()const{return alpha_blend;}
const PipelineData *GetData()const{return data;}
const bool IsAlphaTest()const{return data->alpha_test>0;}
const bool IsAlphaBlend()const{return data->alpha_blend;}
};//class GraphicsPipeline
Pipeline *CreatePipeline(Device *dev,VKPipelineData *,const Material *material,const RenderTarget *);
Pipeline *CreatePipeline(Device *dev,PipelineData *,const Material *material,const RenderTarget *);
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_PIPELINE_INCLUDE

View File

@ -11,7 +11,7 @@ Pipeline::~Pipeline()
vkDestroyPipeline(device,pipeline,nullptr);
}
Pipeline *CreatePipeline(Device *dev,VKPipelineData *data,const Material *material,const RenderTarget *rt)
Pipeline *CreatePipeline(Device *dev,PipelineData *data,const Material *material,const RenderTarget *rt)
{
VkPipeline graphicsPipeline;
@ -21,20 +21,20 @@ Pipeline *CreatePipeline(Device *dev,VKPipelineData *data,const Material *materi
data->InitViewportState(rt->GetExtent());
data->pipelineInfo.layout = material->GetPipelineLayout();
data->pipeline_info.layout = material->GetPipelineLayout();
{
data->pipelineInfo.renderPass = rt->GetRenderPass();
data->pipelineInfo.subpass = 0; //subpass由于还不知道有什么用所以暂时写0待知道功用后需改进
data->pipeline_info.renderPass = rt->GetRenderPass();
data->pipeline_info.subpass = 0; //subpass由于还不知道有什么用所以暂时写0待知道功用后需改进
}
if (vkCreateGraphicsPipelines( dev->GetDevice(),
dev->GetPipelineCache(),
1,&data->pipelineInfo,
1,&data->pipeline_info,
nullptr,
&graphicsPipeline) != VK_SUCCESS)
return(nullptr);
return(new Pipeline(dev->GetDevice(),graphicsPipeline,data->alpha_test>0,data->alpha_blend));
return(new Pipeline(dev->GetDevice(),graphicsPipeline,data));
}
VK_NAMESPACE_END