改动swap chain切换API(改动完成前引擎将暂不可用)

This commit is contained in:
hyzboy 2019-07-12 20:51:48 +08:00
parent ae7ec4b229
commit 62c1ed785d
2 changed files with 26 additions and 9 deletions

View File

@ -198,9 +198,22 @@ public: //Command Buffer 相关
public: //提交相关
bool Wait (bool wait_all=VK_TRUE,uint64_t time_out=HGL_NANO_SEC_PER_SEC*0.1); ///<等待队列完成
bool AcquireNextImage (); ///<请求获得下一帧的索引
bool SubmitDraw (const VkCommandBuffer *,const uint32_t count=1); ///<提交绘制指令
/**
*
*/
bool AcquireNextImage (VkSemaphore); ///<请求获得下一帧的索引
/**
*
* @param cmd_list
* @param wait_sems
* @param complete_semaphores
*/
bool SubmitDraw (List<VkCommandBuffer> &cmd_list,List<VkSemaphore> &wait_sems,List<VkSemaphore> &complete_semaphores); ///<提交绘制指令
bool SubmitTexture (const VkCommandBuffer *cmd_bufs,const uint32_t count=1); ///<提交纹理处理到队列
bool PresentBackbuffer (); ///<等待绘制队列完成,并将后台缓冲区呈现到前台
};//class Device
VK_NAMESPACE_END

View File

@ -172,18 +172,22 @@ bool Device::Wait(bool wait_all,uint64_t time_out)
return(true);
}
bool Device::AcquireNextImage()
bool Device::AcquireNextImage(VkSemaphore present_complete_semaphore)
{
return(vkAcquireNextImageKHR(attr->device,attr->swap_chain,UINT64_MAX,*present_complete_semaphore,VK_NULL_HANDLE,&current_frame)==VK_SUCCESS);
return(vkAcquireNextImageKHR(attr->device,attr->swap_chain,UINT64_MAX,present_complete_semaphore,VK_NULL_HANDLE,&current_frame)==VK_SUCCESS);
}
bool Device::SubmitDraw(const VkCommandBuffer *cmd_bufs,const uint32_t count)
bool Device::SubmitDraw(List<VkCommandBuffer> &cmd_lists,List<VkSemaphore> &wait_sems,List<VkSemaphore> &complete_sems)
{
if(!cmd_bufs||count<=0)
if(cmd_lists.GetCount()<=0)
return(false);
submit_info.commandBufferCount = count;
submit_info.pCommandBuffers = cmd_bufs;
submit_info.waitSemaphoreCount =wait_sems.GetCount();
submit_info.pWaitSemaphores =wait_sems.GetData();
submit_info.commandBufferCount =cmd_lists.GetCount();
submit_info.pCommandBuffers =cmd_lists.GetData();
submit_info.signalSemaphoreCount=complete_sems.GetCount();
submit_info.pSignalSemaphores =complete_sems.GetData();
VkFence fence=*fence_list[current_fence];