Device建立专有的CreateIBO系列函数
This commit is contained in:
parent
89d53c615c
commit
34ae77c8fc
@ -98,7 +98,7 @@ Device::~Device()
|
|||||||
delete attr;
|
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);
|
const uint32_t stride=GetStrideByFormat(format);
|
||||||
|
|
||||||
@ -112,12 +112,30 @@ VertexBuffer *Device::CreateBuffer(VkBufferUsageFlags buf_usage,VkFormat format,
|
|||||||
|
|
||||||
VulkanBuffer vb;
|
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(nullptr);
|
||||||
|
|
||||||
return(new VertexBuffer(attr->device,vb,format,stride,count));
|
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)
|
Buffer *Device::CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode)
|
||||||
{
|
{
|
||||||
VulkanBuffer vb;
|
VulkanBuffer vb;
|
||||||
|
@ -11,6 +11,7 @@ VK_NAMESPACE_BEGIN
|
|||||||
struct PhysicalDevice;
|
struct PhysicalDevice;
|
||||||
class Buffer;
|
class Buffer;
|
||||||
class VertexBuffer;
|
class VertexBuffer;
|
||||||
|
class IndexBuffer;
|
||||||
class CommandBuffer;
|
class CommandBuffer;
|
||||||
class RenderPass;
|
class RenderPass;
|
||||||
class Fence;
|
class Fence;
|
||||||
@ -68,12 +69,12 @@ public:
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
|
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);
|
|
||||||
|
|
||||||
#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);}
|
VertexBuffer * CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
|
||||||
CREATE_FORMAT_BUFFER_OBJECT(VBO,VERTEX)
|
|
||||||
CREATE_FORMAT_BUFFER_OBJECT(IBO,INDEX)
|
IndexBuffer * CreateIBO(VkIndexType index_type,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
|
||||||
#undef CREATE_FORMAT_BUFFER_OBJECT
|
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);}
|
#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