diff --git a/example/Vulkan/InlineGeometryScene.cpp b/example/Vulkan/InlineGeometryScene.cpp index 154bddfd..4c3596ab 100644 --- a/example/Vulkan/InlineGeometryScene.cpp +++ b/example/Vulkan/InlineGeometryScene.cpp @@ -71,12 +71,12 @@ private: pgci.color.Set(0.75,0,0,1); pgci.side_color.Set(1,0,0,1); - ro_plane_grid=CreatePlaneGrid(db,material,&pgci); + ro_plane_grid=CreateRenderablePlaneGrid(db,material,&pgci); } { struct CubeCreateInfo cci; - ro_cube=CreateCube(db,material,&cci); + ro_cube=CreateRenderableCube(db,material,&cci); } { @@ -87,7 +87,7 @@ private: DomeCreateInfo dci; dci.radius=100; - dci.numberSlices=16; + dci.numberSlices=32; ro_dome=CreateRenderableDome(db,material,&dci); } @@ -170,8 +170,8 @@ private: render_root.Add(db->CreateRenderableInstance(pipeline_line,descriptor_sets,ro_plane_grid)); render_root.Add(db->CreateRenderableInstance(pipeline_twoside,descriptor_sets,ro_dome)); render_root.Add(db->CreateRenderableInstance(pipeline_twoside,descriptor_sets,ro_torus)); - render_root.Add(db->CreateRenderableInstance(pipeline_solid,descriptor_sets,ro_cube ),translate(-10, 0,10)*scale(10,10,10)); - render_root.Add(db->CreateRenderableInstance(pipeline_solid,descriptor_sets,ro_sphere ),translate( 10, 0,10)*scale(10,10,10)); + render_root.Add(db->CreateRenderableInstance(pipeline_solid,descriptor_sets,ro_cube ),translate(-10, 0, 5)*scale(10,10,10)); + render_root.Add(db->CreateRenderableInstance(pipeline_solid,descriptor_sets,ro_sphere ),translate( 10, 0, 5)*scale(10,10,10)); render_root.Add(db->CreateRenderableInstance(pipeline_solid,descriptor_sets,ro_cylinder ),translate( 0, 16, 0)); render_root.Add(db->CreateRenderableInstance(pipeline_solid,descriptor_sets,ro_cone ),translate( 0,-16, 0)); diff --git a/inc/hgl/graph/InlineGeometry.h b/inc/hgl/graph/InlineGeometry.h index 5d540196..8e2fbf0e 100644 --- a/inc/hgl/graph/InlineGeometry.h +++ b/inc/hgl/graph/InlineGeometry.h @@ -58,7 +58,7 @@ namespace hgl Color4f side_color; //边界线条颜色 };//struct PlaneGridCreateInfo - vulkan::Renderable *CreatePlaneGrid(SceneDB *db,vulkan::Material *mtl,const PlaneGridCreateInfo *pgci); + vulkan::Renderable *CreateRenderablePlaneGrid(SceneDB *db,vulkan::Material *mtl,const PlaneGridCreateInfo *pgci); struct PlaneCreateInfo { @@ -75,7 +75,7 @@ namespace hgl /** * 创建一个中心坐标为0,0,0,长宽高为1的立方体 */ - vulkan::Renderable *CreateCube(SceneDB *db,vulkan::Material *mtl,const CubeCreateInfo *cci); + vulkan::Renderable *CreateRenderableCube(SceneDB *db,vulkan::Material *mtl,const CubeCreateInfo *cci); /** * 创建一个球心坐标为0,0,0,半径为1的球体 diff --git a/src/RenderDevice/Vulkan/VKDevice.cpp b/src/RenderDevice/Vulkan/VKDevice.cpp index dda6fd32..701db5e7 100644 --- a/src/RenderDevice/Vulkan/VKDevice.cpp +++ b/src/RenderDevice/Vulkan/VKDevice.cpp @@ -257,14 +257,11 @@ bool Device::SubmitDraw(const VkCommandBuffer *cmd_bufs,const uint32_t count) submit_info.commandBufferCount = count; submit_info.pCommandBuffers = cmd_bufs; - + VkFence fence=*fence_list[current_fence]; VkResult result=vkQueueSubmit(attr->graphics_queue,1,&submit_info,fence); - if(++current_fence==swap_chain_count) - current_fence=0; - return(result==VK_SUCCESS); } @@ -275,6 +272,9 @@ bool Device::Wait(bool wait_all,uint64_t time_out) vkWaitForFences(attr->device,1,&fence,wait_all,time_out); vkResetFences(attr->device,1,&fence); + if(++current_fence==swap_chain_count) + current_fence=0; + return(true); } diff --git a/src/RenderDevice/Vulkan/VKDeviceCreater.cpp b/src/RenderDevice/Vulkan/VKDeviceCreater.cpp index 91371368..f957b777 100644 --- a/src/RenderDevice/Vulkan/VKDeviceCreater.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceCreater.cpp @@ -102,7 +102,7 @@ namespace swapchain_ci.sType=VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; swapchain_ci.pNext=nullptr; swapchain_ci.surface=rsa->surface; - swapchain_ci.minImageCount=rsa->surface_caps.minImageCount; + swapchain_ci.minImageCount=3;//rsa->surface_caps.minImageCount; swapchain_ci.imageFormat=rsa->format; swapchain_ci.imageExtent=rsa->swapchain_extent; swapchain_ci.preTransform=rsa->preTransform;