diff --git a/example/Vulkan/first_triangle.cpp b/example/Vulkan/first_triangle.cpp index e1c17f69..13fc50fc 100644 --- a/example/Vulkan/first_triangle.cpp +++ b/example/Vulkan/first_triangle.cpp @@ -41,6 +41,14 @@ private: private: + bool RecreatePipeline() + { +// pipeline=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/solid2d")); + pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D); //等同上一行,为Framework重载,默认使用swapchain的render target + + return pipeline; + } + bool InitMaterial() { material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/VertexColor2D")); @@ -48,10 +56,7 @@ private: if(!material_instance) return(false); -// pipeline=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/solid2d")); - pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D); //等同上一行,为Framework重载,默认使用swapchain的render target - - return pipeline; + return RecreatePipeline(); } bool InitUBO() @@ -125,6 +130,8 @@ public: ubo_camera_info->Write(&cam.info); + RecreatePipeline(); + render_instance->UpdatePipeline(pipeline); BuildCommandBuffer(render_instance); } };//class TestApp:public VulkanApplicationFramework diff --git a/inc/hgl/graph/VKRenderableInstance.h b/inc/hgl/graph/VKRenderableInstance.h index addfaafe..bcc9ba6e 100644 --- a/inc/hgl/graph/VKRenderableInstance.h +++ b/inc/hgl/graph/VKRenderableInstance.h @@ -34,6 +34,8 @@ public: virtual ~RenderableInstance(); + void UpdatePipeline (Pipeline *p){pipeline=p;} + Pipeline * GetPipeline (){return pipeline;} VkPipelineLayout GetPipelineLayout (){return mat_inst->GetMaterial()->GetPipelineLayout();} Material * GetMaterial (){return mat_inst->GetMaterial();}