Device建立专有的CreateIBO系列函数
This commit is contained in:
parent
89d53c615c
commit
34ae77c8fc
@ -98,7 +98,7 @@ Device::~Device()
|
||||
delete attr;
|
||||
}
|
||||
|
||||
VertexBuffer *Device::CreateBuffer(VkBufferUsageFlags buf_usage,VkFormat format,uint32_t count,VkSharingMode sharing_mode)
|
||||
VertexBuffer *Device::CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode)
|
||||
{
|
||||
const uint32_t stride=GetStrideByFormat(format);
|
||||
|
||||
@ -112,12 +112,30 @@ VertexBuffer *Device::CreateBuffer(VkBufferUsageFlags buf_usage,VkFormat format,
|
||||
|
||||
VulkanBuffer vb;
|
||||
|
||||
if(!CreateVulkanBuffer(vb,attr,buf_usage,size,sharing_mode))
|
||||
if(!CreateVulkanBuffer(vb,attr,VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,size,sharing_mode))
|
||||
return(nullptr);
|
||||
|
||||
return(new VertexBuffer(attr->device,vb,format,stride,count));
|
||||
}
|
||||
|
||||
IndexBuffer *Device::CreateIBO(VkIndexType index_type,uint32_t count,VkSharingMode sharing_mode)
|
||||
{
|
||||
uint32_t stride;
|
||||
|
||||
if(index_type==VK_INDEX_TYPE_UINT16)stride=2;else
|
||||
if(index_type==VK_INDEX_TYPE_UINT32)stride=4;else
|
||||
return(nullptr);
|
||||
|
||||
const VkDeviceSize size=stride*count;
|
||||
|
||||
VulkanBuffer vb;
|
||||
|
||||
if(!CreateVulkanBuffer(vb,attr,VK_BUFFER_USAGE_INDEX_BUFFER_BIT,size,sharing_mode))
|
||||
return(nullptr);
|
||||
|
||||
return(new IndexBuffer(attr->device,vb,index_type,count));
|
||||
}
|
||||
|
||||
Buffer *Device::CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode)
|
||||
{
|
||||
VulkanBuffer vb;
|
||||
|
@ -11,6 +11,7 @@ VK_NAMESPACE_BEGIN
|
||||
struct PhysicalDevice;
|
||||
class Buffer;
|
||||
class VertexBuffer;
|
||||
class IndexBuffer;
|
||||
class CommandBuffer;
|
||||
class RenderPass;
|
||||
class Fence;
|
||||
@ -68,12 +69,12 @@ public:
|
||||
public:
|
||||
|
||||
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
|
||||
VertexBuffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
|
||||
|
||||
VertexBuffer * CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
|
||||
|
||||
#define CREATE_FORMAT_BUFFER_OBJECT(LargeName,type) VertexBuffer *Create##LargeName(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateBuffer(VK_BUFFER_USAGE_##type##_BUFFER_BIT,format,count,sharing_mode);}
|
||||
CREATE_FORMAT_BUFFER_OBJECT(VBO,VERTEX)
|
||||
CREATE_FORMAT_BUFFER_OBJECT(IBO,INDEX)
|
||||
#undef CREATE_FORMAT_BUFFER_OBJECT
|
||||
IndexBuffer * CreateIBO(VkIndexType index_type,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
|
||||
IndexBuffer * CreateIBO16(uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT16,count,sharing_mode);}
|
||||
IndexBuffer * CreateIBO32(uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT32,count,sharing_mode);}
|
||||
|
||||
#define CREATE_BUFFER_OBJECT(LargeName,type) Buffer *Create##LargeName(VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateBuffer(VK_BUFFER_USAGE_##type##_BUFFER_BIT,size,sharing_mode);}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user