From 1a18fdd77cb33ad622f1497e7adef1b1c91baae2 Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Mon, 20 Jun 2022 21:40:28 +0800 Subject: [PATCH] added FullScreenRect example. --- example/Vulkan/FullScreenRect.cpp | 89 +++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/example/Vulkan/FullScreenRect.cpp b/example/Vulkan/FullScreenRect.cpp index e69de29b..aeb0c6e5 100644 --- a/example/Vulkan/FullScreenRect.cpp +++ b/example/Vulkan/FullScreenRect.cpp @@ -0,0 +1,89 @@ +// 全屏矩形 +// 该范例用于演示使用索引画一个矩形,但是不传递顶点信息。 + +#include"VulkanAppFramework.h" +#include + +using namespace hgl; +using namespace hgl::graph; + +constexpr uint32_t SCREEN_WIDTH=256; +constexpr uint32_t SCREEN_HEIGHT=256; + +static Vector4f color(1,1,1,1); + +class TestApp:public VulkanApplicationFramework +{ +private: + + MaterialInstance * material_instance =nullptr; + RenderableInstance *renderable_instance =nullptr; + + Pipeline * pipeline =nullptr; + +private: + + bool InitMaterial() + { + material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/fullscreen")); + if(!material_instance)return(false); + + BindCameraUBO(material_instance); + + pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Fan); + + return pipeline; + } + + bool InitVBO() + { + auto render_obj=db->CreateRenderable(4); + if(!render_obj)return(false); + + renderable_instance=db->CreateRenderableInstance(render_obj,material_instance,pipeline); + + return(true); + } + +public: + + bool Init() + { + if(!VulkanApplicationFramework::Init(SCREEN_WIDTH,SCREEN_HEIGHT)) + return(false); + + if(!InitMaterial()) + return(false); + + if(!InitVBO()) + return(false); + + BuildCommandBuffer(renderable_instance); + + return(true); + } + + void Resize(int w,int h)override + { + VulkanApplicationFramework::Resize(w,h); + + BuildCommandBuffer(renderable_instance); + } +};//class TestApp:public VulkanApplicationFramework + +int main(int,char **) +{ + #ifdef _DEBUG + if(!CheckStrideBytesByFormat()) + return 0xff; + #endif// + + TestApp app; + + if(!app.Init()) + return(-1); + + while(app.Run()); + + return 0; +}