ULRE/inc/hgl/graph/vulkan/VKRenderPass.h

83 lines
2.1 KiB
C
Raw Normal View History

2019-04-22 17:46:49 +08:00
#ifndef HGL_GRAPH_VULKAN_RENDER_PASS_INCLUDE
2019-04-12 16:39:22 +08:00
#define HGL_GRAPH_VULKAN_RENDER_PASS_INCLUDE
#include<hgl/graph/vulkan/VK.h>
2019-04-12 16:39:22 +08:00
VK_NAMESPACE_BEGIN
2019-04-22 17:46:49 +08:00
/**
* RenderPass功能封装<br>
* RenderPass在创建时color imageview与depth imageview象素格式
* Framebuffer时RenderPass与ColorImageView,DepthImageView
*/
2019-04-12 16:39:22 +08:00
class RenderPass
{
VkDevice device;
VkRenderPass render_pass;
List<VkFormat> color_formats;
VkFormat depth_format;
private:
friend class Device;
2019-04-12 16:39:22 +08:00
RenderPass(VkDevice d,VkRenderPass rp,const List<VkFormat> &cf,VkFormat df)
{
device=d;
render_pass=rp;
color_formats=cf;
depth_format=df;
}
RenderPass(VkDevice d,VkRenderPass rp,VkFormat cf,VkFormat df)
2019-04-12 16:39:22 +08:00
{
device=d;
render_pass=rp;
color_formats.Add(cf);
depth_format=df;
2019-04-12 16:39:22 +08:00
}
public:
2019-04-12 16:39:22 +08:00
virtual ~RenderPass();
2019-04-18 21:02:42 +08:00
operator VkRenderPass(){return render_pass;}
const uint GetColorCount()const{return color_formats.GetCount();}
const List<VkFormat> & GetColorFormat()const{return color_formats;}
const VkFormat GetDepthFormat()const{return depth_format;}
2019-04-12 16:39:22 +08:00
};//class RenderPass
2020-01-21 18:57:26 +08:00
class RenderpassCreater
{
Device *device;
List<VkAttachmentDescription> atta_desc_list;
public:
RenderpassCreater(Device *d)
{
device=d;
}
~RenderpassCreater()=default;
int AddSwapchainImage()
{
VkAttachmentDescription desc;
desc.format = device->GetSurfaceFormat();
desc.samples = VK_SAMPLE_COUNT_1_BIT;
desc.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
desc.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
desc.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
desc.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
desc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
desc.finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
return atta_desc_list.Add(desc);
}
};//class RenderpassCreater
2019-04-12 16:39:22 +08:00
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_RENDER_PASS_INCLUDE