renamed to RTSwapchain instead of SwapchainRenderTarget
This commit is contained in:
parent
3b106a3b42
commit
ef84e5c699
@ -62,7 +62,7 @@ private:
|
|||||||
if(!material_instance)
|
if(!material_instance)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
db->global_descriptor.Bind(material_instance);
|
db->global_descriptor.Bind(material_instance->GetMaterial());
|
||||||
|
|
||||||
// pipeline=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/solid2d"));
|
// pipeline=db->CreatePipeline(material_instance,sc_render_target,OS_TEXT("res/pipeline/solid2d"));
|
||||||
pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Triangles); //等同上一行,为Framework重载,默认使用swapchain的render target
|
pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Triangles); //等同上一行,为Framework重载,默认使用swapchain的render target
|
||||||
|
@ -52,7 +52,7 @@ protected:
|
|||||||
|
|
||||||
GPUDevice * device =nullptr;
|
GPUDevice * device =nullptr;
|
||||||
RenderPass * device_render_pass =nullptr;
|
RenderPass * device_render_pass =nullptr;
|
||||||
SwapchainRenderTarget * sc_render_target =nullptr;
|
RTSwapchain * sc_render_target =nullptr;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ class ImageView;
|
|||||||
class Framebuffer;
|
class Framebuffer;
|
||||||
struct Swapchain;
|
struct Swapchain;
|
||||||
class RenderTarget;
|
class RenderTarget;
|
||||||
class SwapchainRenderTarget;
|
class RTSwapchain;
|
||||||
|
|
||||||
class Texture;
|
class Texture;
|
||||||
class Texture1D;
|
class Texture1D;
|
||||||
|
@ -36,9 +36,9 @@ private:
|
|||||||
DeviceRenderPassManage *render_pass_manage;
|
DeviceRenderPassManage *render_pass_manage;
|
||||||
RenderPass *device_render_pass;
|
RenderPass *device_render_pass;
|
||||||
|
|
||||||
SwapchainRenderTarget *swapchainRT;
|
RTSwapchain *sc_rt;
|
||||||
|
|
||||||
SwapchainRenderTarget *CreateSwapchainRenderTarget();
|
RTSwapchain *CreateSwapchainRenderTarget();
|
||||||
|
|
||||||
void InitRenderPassManage();
|
void InitRenderPassManage();
|
||||||
void ClearRenderPassManage();
|
void ClearRenderPassManage();
|
||||||
@ -77,9 +77,9 @@ public:
|
|||||||
|
|
||||||
RenderPass * GetRenderPass () {return device_render_pass;}
|
RenderPass * GetRenderPass () {return device_render_pass;}
|
||||||
|
|
||||||
SwapchainRenderTarget * GetSwapchainRT () {return swapchainRT;}
|
RTSwapchain * GetSwapchainRT () {return sc_rt;}
|
||||||
|
|
||||||
const VkExtent2D & GetSwapchainSize ()const {return swapchainRT->GetExtent();}
|
const VkExtent2D & GetSwapchainSize ()const {return sc_rt->GetExtent();}
|
||||||
|
|
||||||
void WaitIdle ()const {vkDeviceWaitIdle(attr->device);}
|
void WaitIdle ()const {vkDeviceWaitIdle(attr->device);}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ class RenderResource
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
//注:并非一定要走这里,这里只是提供一个注册和自动绑定的机制
|
//注:并非一定要走这里,这里只是提供一个注册和自动绑定的机制
|
||||||
DescriptorBinding global_descriptor; ///<全局属性描述符绑定管理
|
DescriptorBinding global_descriptor; ///<全局属性描述符绑定管理
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ public: // command buffer
|
|||||||
/**
|
/**
|
||||||
* 交换链专用渲染目标
|
* 交换链专用渲染目标
|
||||||
*/
|
*/
|
||||||
class SwapchainRenderTarget:public RenderTarget
|
class RTSwapchain:public RenderTarget
|
||||||
{
|
{
|
||||||
VkDevice device;
|
VkDevice device;
|
||||||
Swapchain *swapchain;
|
Swapchain *swapchain;
|
||||||
@ -75,8 +75,8 @@ class SwapchainRenderTarget:public RenderTarget
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
SwapchainRenderTarget(VkDevice dev,Swapchain *sc,DeviceQueue *q,Semaphore *rcs,Semaphore *pcs,RenderPass *rp);
|
RTSwapchain(VkDevice dev,Swapchain *sc,DeviceQueue *q,Semaphore *rcs,Semaphore *pcs,RenderPass *rp);
|
||||||
~SwapchainRenderTarget();
|
~RTSwapchain();
|
||||||
|
|
||||||
Framebuffer * GetFramebuffer ()override {return swapchain->sc_fbo[current_frame];}
|
Framebuffer * GetFramebuffer ()override {return swapchain->sc_fbo[current_frame];}
|
||||||
Framebuffer * GetFramebuffer (const uint32_t index) {return swapchain->sc_fbo[index];}
|
Framebuffer * GetFramebuffer (const uint32_t index) {return swapchain->sc_fbo[index];}
|
||||||
@ -110,6 +110,6 @@ public:
|
|||||||
|
|
||||||
bool Submit(VkCommandBuffer);
|
bool Submit(VkCommandBuffer);
|
||||||
bool Submit(VkCommandBuffer,Semaphore *);
|
bool Submit(VkCommandBuffer,Semaphore *);
|
||||||
};//class SwapchainRenderTarget:public RenderTarget
|
};//class RTSwapchain:public RenderTarget
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
#endif//HGL_GRAPH_VULKAN_RENDER_TARGET_INCLUDE
|
#endif//HGL_GRAPH_VULKAN_RENDER_TARGET_INCLUDE
|
||||||
|
@ -20,7 +20,7 @@ GPUDevice::GPUDevice(GPUDeviceAttribute *da)
|
|||||||
|
|
||||||
InitRenderPassManage();
|
InitRenderPassManage();
|
||||||
|
|
||||||
swapchainRT=nullptr;
|
sc_rt=nullptr;
|
||||||
Resize(attr->surface_caps.currentExtent);
|
Resize(attr->surface_caps.currentExtent);
|
||||||
|
|
||||||
texture_cmd_buf=CreateTextureCommandBuffer();
|
texture_cmd_buf=CreateTextureCommandBuffer();
|
||||||
@ -31,7 +31,7 @@ GPUDevice::~GPUDevice()
|
|||||||
{
|
{
|
||||||
ClearRenderPassManage();
|
ClearRenderPassManage();
|
||||||
|
|
||||||
SAFE_CLEAR(swapchainRT);
|
SAFE_CLEAR(sc_rt);
|
||||||
|
|
||||||
SAFE_CLEAR(texture_queue);
|
SAFE_CLEAR(texture_queue);
|
||||||
SAFE_CLEAR(texture_cmd_buf);
|
SAFE_CLEAR(texture_cmd_buf);
|
||||||
@ -41,13 +41,13 @@ GPUDevice::~GPUDevice()
|
|||||||
|
|
||||||
bool GPUDevice::Resize(const VkExtent2D &extent)
|
bool GPUDevice::Resize(const VkExtent2D &extent)
|
||||||
{
|
{
|
||||||
SAFE_CLEAR(swapchainRT);
|
SAFE_CLEAR(sc_rt);
|
||||||
|
|
||||||
attr->RefreshSurfaceCaps();
|
attr->RefreshSurfaceCaps();
|
||||||
|
|
||||||
swapchainRT=CreateSwapchainRenderTarget();
|
sc_rt=CreateSwapchainRenderTarget();
|
||||||
|
|
||||||
return(swapchainRT);
|
return(sc_rt);
|
||||||
}
|
}
|
||||||
|
|
||||||
VkCommandBuffer GPUDevice::CreateCommandBuffer()
|
VkCommandBuffer GPUDevice::CreateCommandBuffer()
|
||||||
|
@ -57,7 +57,7 @@ RenderTarget *GPUDevice::CreateRT(const FramebufferInfo *fbi,const uint32_t fenc
|
|||||||
return CreateRT(fbi,rp,fence_count);
|
return CreateRT(fbi,rp,fence_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
SwapchainRenderTarget *GPUDevice::CreateSwapchainRenderTarget()
|
RTSwapchain *GPUDevice::CreateSwapchainRenderTarget()
|
||||||
{
|
{
|
||||||
Swapchain *sc=CreateSwapchain(attr->surface_caps.currentExtent);
|
Swapchain *sc=CreateSwapchain(attr->surface_caps.currentExtent);
|
||||||
|
|
||||||
@ -68,14 +68,14 @@ SwapchainRenderTarget *GPUDevice::CreateSwapchainRenderTarget()
|
|||||||
Semaphore *render_complete_semaphore=CreateGPUSemaphore();
|
Semaphore *render_complete_semaphore=CreateGPUSemaphore();
|
||||||
Semaphore *present_complete_semaphore=CreateGPUSemaphore();
|
Semaphore *present_complete_semaphore=CreateGPUSemaphore();
|
||||||
|
|
||||||
SwapchainRenderTarget *srt=new SwapchainRenderTarget( attr->device,
|
RTSwapchain *srt=new RTSwapchain( attr->device,
|
||||||
sc,
|
sc,
|
||||||
q,
|
q,
|
||||||
render_complete_semaphore,
|
render_complete_semaphore,
|
||||||
present_complete_semaphore,
|
present_complete_semaphore,
|
||||||
device_render_pass
|
device_render_pass
|
||||||
);
|
);
|
||||||
|
|
||||||
return srt;
|
return srt;
|
||||||
}
|
}
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include<hgl/graph/VKSemaphore.h>
|
#include<hgl/graph/VKSemaphore.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
SwapchainRenderTarget::SwapchainRenderTarget(VkDevice dev,Swapchain *sc,DeviceQueue *q,Semaphore *rcs,Semaphore *pcs,RenderPass *rp):RenderTarget(q,rcs)
|
RTSwapchain::RTSwapchain(VkDevice dev,Swapchain *sc,DeviceQueue *q,Semaphore *rcs,Semaphore *pcs,RenderPass *rp):RenderTarget(q,rcs)
|
||||||
{
|
{
|
||||||
device=dev;
|
device=dev;
|
||||||
|
|
||||||
@ -24,13 +24,13 @@ SwapchainRenderTarget::SwapchainRenderTarget(VkDevice dev,Swapchain *sc,DeviceQu
|
|||||||
present_complete_semaphore=pcs;
|
present_complete_semaphore=pcs;
|
||||||
}
|
}
|
||||||
|
|
||||||
SwapchainRenderTarget::~SwapchainRenderTarget()
|
RTSwapchain::~RTSwapchain()
|
||||||
{
|
{
|
||||||
delete present_complete_semaphore;
|
delete present_complete_semaphore;
|
||||||
delete swapchain;
|
delete swapchain;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SwapchainRenderTarget::AcquireNextImage()
|
int RTSwapchain::AcquireNextImage()
|
||||||
{
|
{
|
||||||
if(vkAcquireNextImageKHR(device,swapchain->swap_chain,UINT64_MAX,*(this->present_complete_semaphore),VK_NULL_HANDLE,¤t_frame)==VK_SUCCESS)
|
if(vkAcquireNextImageKHR(device,swapchain->swap_chain,UINT64_MAX,*(this->present_complete_semaphore),VK_NULL_HANDLE,¤t_frame)==VK_SUCCESS)
|
||||||
return current_frame;
|
return current_frame;
|
||||||
@ -38,7 +38,7 @@ int SwapchainRenderTarget::AcquireNextImage()
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SwapchainRenderTarget::PresentBackbuffer(VkSemaphore *wait_semaphores,const uint32_t count)
|
bool RTSwapchain::PresentBackbuffer(VkSemaphore *wait_semaphores,const uint32_t count)
|
||||||
{
|
{
|
||||||
present_info.waitSemaphoreCount =count;
|
present_info.waitSemaphoreCount =count;
|
||||||
present_info.pWaitSemaphores =wait_semaphores;
|
present_info.pWaitSemaphores =wait_semaphores;
|
||||||
@ -58,19 +58,19 @@ bool SwapchainRenderTarget::PresentBackbuffer(VkSemaphore *wait_semaphores,const
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SwapchainRenderTarget::PresentBackbuffer()
|
bool RTSwapchain::PresentBackbuffer()
|
||||||
{
|
{
|
||||||
VkSemaphore sem=*render_complete_semaphore;
|
VkSemaphore sem=*render_complete_semaphore;
|
||||||
|
|
||||||
return this->PresentBackbuffer(&sem,1);
|
return this->PresentBackbuffer(&sem,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SwapchainRenderTarget::Submit(VkCommandBuffer cb)
|
bool RTSwapchain::Submit(VkCommandBuffer cb)
|
||||||
{
|
{
|
||||||
return queue->Submit(cb,present_complete_semaphore,render_complete_semaphore);
|
return queue->Submit(cb,present_complete_semaphore,render_complete_semaphore);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SwapchainRenderTarget::Submit(VkCommandBuffer cb,Semaphore *pce)
|
bool RTSwapchain::Submit(VkCommandBuffer cb,Semaphore *pce)
|
||||||
{
|
{
|
||||||
return queue->Submit(cb,pce,render_complete_semaphore);
|
return queue->Submit(cb,pce,render_complete_semaphore);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user