diff --git a/example/Basic/first_app.cpp b/example/Basic/first_app.cpp index 1b2bdca7..4125c83f 100644 --- a/example/Basic/first_app.cpp +++ b/example/Basic/first_app.cpp @@ -1,8 +1,11 @@ #include using namespace hgl; +using namespace hgl::graph; int os_main(int,os_char **) { + RenderFramework rf; + } \ No newline at end of file diff --git a/inc/hgl/graph/RenderFramework.h b/inc/hgl/graph/RenderFramework.h index f34cafee..6bfaa605 100644 --- a/inc/hgl/graph/RenderFramework.h +++ b/inc/hgl/graph/RenderFramework.h @@ -13,7 +13,6 @@ class TileData; class TileFont; class FontSource; -class Window; class VulkanInstance; class RenderPassManager; @@ -88,7 +87,7 @@ public: RenderFramework(); virtual ~RenderFramework(); - virtual bool Init(); ///<初始化 + virtual bool Init(uint w,uint h,const OSString &app_name); ///<初始化 virtual void StartTime(); diff --git a/inc/hgl/graph/VKDeviceCreater.h b/inc/hgl/graph/VKDeviceCreater.h index 68acb858..c1f7f5f3 100644 --- a/inc/hgl/graph/VKDeviceCreater.h +++ b/inc/hgl/graph/VKDeviceCreater.h @@ -114,6 +114,8 @@ public: fullDrawIndexUint32=SupportLevel::Want; blendOperationAdvanced=SupportLevel::Want; + + wideLines=SupportLevel::Want; } }; diff --git a/inc/hgl/graph/VKRenderTarget.h b/inc/hgl/graph/VKRenderTarget.h index a90119ee..ceaea61f 100644 --- a/inc/hgl/graph/VKRenderTarget.h +++ b/inc/hgl/graph/VKRenderTarget.h @@ -9,12 +9,6 @@ #include VK_NAMESPACE_BEGIN -工作: - - 1.RT支持多FBO,同交换链一样 - 2.RT内包含CommandBuffer - - /** * 渲染目标 */ diff --git a/inc/hgl/graph/VKSwapchain.h b/inc/hgl/graph/VKSwapchain.h index 991ba5a7..1db3f75e 100644 --- a/inc/hgl/graph/VKSwapchain.h +++ b/inc/hgl/graph/VKSwapchain.h @@ -1,5 +1,4 @@ -#ifndef HGL_GRAPH_VULKAN_SWAP_CHAIN_INCLUDE -#define HGL_GRAPH_VULKAN_SWAP_CHAIN_INCLUDE +#pragma once #include #include @@ -31,4 +30,3 @@ public: virtual ~Swapchain(); };//struct Swapchain VK_NAMESPACE_END -#endif//HGL_GRAPH_VULKAN_SWAP_CHAIN_INCLUDE diff --git a/src/SceneGraph/RenderFramework.cpp b/src/SceneGraph/RenderFramework.cpp index a21fc8a2..9b3afd9a 100644 --- a/src/SceneGraph/RenderFramework.cpp +++ b/src/SceneGraph/RenderFramework.cpp @@ -1,7 +1,9 @@ #include #include #include +#include #include +#include VK_NAMESPACE_BEGIN @@ -11,12 +13,25 @@ void CloseShaderCompiler(); GraphModuleManager *InitGraphModuleManager(GPUDevice *dev); bool ClearGraphModuleManager(GPUDevice *dev); +namespace +{ + hgl::graph::VulkanInstance *CreateVulkanInstance(const AnsiString &app_name) + { + CreateInstanceLayerInfo cili; + + hgl_zero(cili); + + cili.lunarg.standard_validation = true; + cili.khronos.validation = true; + + InitVulkanInstanceProperties(); + + return CreateInstance("VulkanTest",nullptr,&cili); + } +}//namespace + RenderFramework::RenderFramework() { - graph_module_manager=InitGraphModuleManager(device); - - render_pass_manager=graph_module_manager->GetModule(true); - swapchain_module=graph_module_manager->GetModule(true); } RenderFramework::~RenderFramework() @@ -77,11 +92,48 @@ void RenderFramework::MainLoop() EndFrame(); } -bool RenderFramework::Init() +bool RenderFramework::Init(uint w,uint h,const OSString &app_name) { + logger::InitLogger(app_name); + if(!InitShaderCompiler()) return(false); + InitNativeWindowSystem(); + + win=CreateRenderWindow(app_name); + if(!win) + return(false); + + if(!win->Create(w,h)) + { + delete win; + win=nullptr; + return(false); + } + + inst=CreateVulkanInstance(ToAnsiString(app_name)); + if(!inst) + return(false); + + { + VulkanHardwareRequirement vh_req; + + device=CreateRenderDevice(inst,win,&vh_req); + + if(!device) + return(false); + + graph_module_manager=InitGraphModuleManager(device); + + render_pass_manager=graph_module_manager->GetModule(true); + swapchain_module=graph_module_manager->GetModule(true); + } + + win->Join(this); + + + return(true); }