2019-04-10 21:54:39 +08:00
|
|
|
#ifndef HGL_GRAPH_RENDER_SURFACE_INCLUDE
|
|
|
|
#define HGL_GRAPH_RENDER_SURFACE_INCLUDE
|
|
|
|
|
|
|
|
#include<hgl/type/List.h>
|
|
|
|
#include"VK.h"
|
|
|
|
#include"Window.h"
|
2019-04-11 02:29:21 +08:00
|
|
|
#include"RenderSurfaceAttribute.h"
|
2019-04-11 22:40:13 +08:00
|
|
|
#include"VKBuffer.h"
|
2019-04-10 21:54:39 +08:00
|
|
|
#include"VKCommandBuffer.h"
|
|
|
|
|
|
|
|
VK_NAMESPACE_BEGIN
|
|
|
|
|
2019-04-11 02:29:21 +08:00
|
|
|
using RefRenderSurfaceAttribute=SharedPtr<RenderSurfaceAttribute>;
|
2019-04-10 21:54:39 +08:00
|
|
|
|
2019-04-11 02:29:21 +08:00
|
|
|
class RenderSurface
|
|
|
|
{
|
|
|
|
RefRenderSurfaceAttribute rsa;
|
2019-04-10 21:54:39 +08:00
|
|
|
|
2019-04-11 02:29:21 +08:00
|
|
|
private:
|
2019-04-10 21:54:39 +08:00
|
|
|
|
2019-04-11 02:29:21 +08:00
|
|
|
friend RenderSurface *CreateRenderSuface(VkInstance,VkPhysicalDevice,Window *);
|
2019-04-10 21:54:39 +08:00
|
|
|
|
2019-04-11 02:29:21 +08:00
|
|
|
RenderSurface(RefRenderSurfaceAttribute &ref_rsa)
|
|
|
|
{
|
|
|
|
rsa=ref_rsa;
|
|
|
|
}
|
2019-04-10 21:54:39 +08:00
|
|
|
|
|
|
|
public:
|
|
|
|
|
2019-04-11 02:29:21 +08:00
|
|
|
virtual ~RenderSurface()=default;
|
2019-04-10 21:54:39 +08:00
|
|
|
|
2019-04-11 02:29:21 +08:00
|
|
|
VkPhysicalDevice GetPhysicalDevice () { return rsa->physical_device; }
|
|
|
|
VkSurfaceKHR GetSurface () { return rsa->surface; }
|
2019-04-10 21:54:39 +08:00
|
|
|
|
|
|
|
public:
|
|
|
|
|
2019-04-11 22:40:13 +08:00
|
|
|
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
|
|
|
|
|
|
|
|
Buffer * CreateUBO(VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE)
|
|
|
|
{
|
|
|
|
return CreateBuffer(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,size,sharing_mode);
|
|
|
|
}
|
|
|
|
|
2019-04-11 02:29:21 +08:00
|
|
|
CommandBuffer * CreateCommandBuffer ();
|
2019-04-10 21:54:39 +08:00
|
|
|
};//class RenderSurface
|
|
|
|
VK_NAMESPACE_END
|
|
|
|
#endif//HGL_GRAPH_RENDER_SURFACE_INCLUDE
|