VulkanApplicationFramework add CreatePipeline functions override.

This commit is contained in:
hyzboy 2020-09-20 21:17:16 +08:00
parent ff23d91352
commit 303c715078
5 changed files with 26 additions and 16 deletions

@ -1 +1 @@
Subproject commit 74e1d564be1a9c2af21b3fc2e4ca319e23b6616a
Subproject commit 1e14c1b01dd9b1e6590110cdf5fb239da30d00c1

View File

@ -51,8 +51,9 @@ private:
{
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/Atmosphere")); //不需要优先创建Material也不需要写扩展名
if(!material_instance)return(false);
pipeline_solid=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/sky"));
// pipeline_solid=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/sky"));
pipeline_solid=CreatePipeline(material_instance,OS_TEXT("res/pipeline/sky")); //等同上一行为Framework重载默认使用swapchain的render target
if(!pipeline_solid)return(false);
return(true);

View File

@ -32,11 +32,11 @@ private:
vulkan::Material * material =nullptr;
vulkan::MaterialInstance * material_instance =nullptr;
vulkan::Renderable * render_obj =nullptr;
vulkan::Buffer * ubo_world_matrix =nullptr;
vulkan::Buffer * ubo_world_matrix =nullptr;
vulkan::Pipeline * pipeline =nullptr;
vulkan::VAB * vertex_buffer =nullptr;
vulkan::VAB * vertex_buffer =nullptr;
public:

View File

@ -266,6 +266,18 @@ public:
return(true);
}
public:
vulkan::Pipeline *CreatePipeline(vulkan::Material *mtl,const OSString &pipeline_name)
{
return db->CreatePipeline(mtl,sc_render_target,pipeline_name);
}
vulkan::Pipeline *CreatePipeline(vulkan::MaterialInstance *mi,const OSString &pipeline_name)
{
return db->CreatePipeline(mi,sc_render_target,pipeline_name);
}
};//class VulkanApplicationFramework
class CameraAppFramework:public VulkanApplicationFramework

View File

@ -57,8 +57,12 @@ private:
if(!material_instance)
return(false);
// pipeline=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/solid2d"));
pipeline=CreatePipeline(material_instance,OS_TEXT("res/pipeline/solid2d")); //等同上一行为Framework重载默认使用swapchain的render target
render_obj=db->CreateRenderable(material_instance,VERTEX_COUNT);
if(!pipeline)
return(false);
return(true);
}
@ -84,6 +88,9 @@ private:
bool InitVBO()
{
render_obj =db->CreateRenderable(material_instance,VERTEX_COUNT);
if(!render_obj)return(false);
vertex_buffer =device->CreateVAB(FMT_RG32F, VERTEX_COUNT,vertex_data);
color_buffer =device->CreateVAB(FMT_RGB32F, VERTEX_COUNT,color_data);
@ -93,13 +100,6 @@ private:
return(true);
}
bool InitPipeline()
{
pipeline=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/solid2d"));
return pipeline;
}
public:
bool Init()
@ -116,9 +116,6 @@ public:
if(!InitVBO())
return(false);
if(!InitPipeline())
return(false);
BuildCommandBuffer(pipeline,material_instance,render_obj);
return(true);