use VAB instead of VBO
This commit is contained in:
@@ -55,7 +55,7 @@ bool GPUDevice::CreateBuffer(DeviceBufferData *buf,VkBufferUsageFlags buf_usage,
|
||||
return(false);
|
||||
}
|
||||
|
||||
VBO *GPUDevice::CreateVBO(VkFormat format,uint32_t count,const void *data,SharingMode sharing_mode)
|
||||
VAB *GPUDevice::CreateVAB(VkFormat format,uint32_t count,const void *data,SharingMode sharing_mode)
|
||||
{
|
||||
if(count==0)return(nullptr);
|
||||
|
||||
|
@@ -27,16 +27,16 @@ VK_NAMESPACE_BEGIN
|
||||
// return(true);
|
||||
//}
|
||||
|
||||
bool Primitive::Set(const AnsiString &name,VBO *vbo,VkDeviceSize offset)
|
||||
bool Primitive::Set(const AnsiString &name,VAB *vab,VkDeviceSize offset)
|
||||
{
|
||||
if(!vbo)return(false);
|
||||
if(!vab)return(false);
|
||||
if(buffer_list.KeyExist(name))return(false);
|
||||
|
||||
VBOAccessData vad;
|
||||
VABAccess vad;
|
||||
|
||||
vad.vbo=vbo;
|
||||
vad.vab=vab;
|
||||
vad.offset=offset;
|
||||
vad.size=vbo->GetBytes();
|
||||
vad.size=vab->GetBytes();
|
||||
|
||||
buffer_list.Add(name,vad);
|
||||
|
||||
@@ -45,15 +45,15 @@ bool Primitive::Set(const AnsiString &name,VBO *vbo,VkDeviceSize offset)
|
||||
|
||||
if(du)
|
||||
{
|
||||
du->SetBuffer(vbo->GetBuffer(),prim_name+":VBO:Buffer:"+name);
|
||||
du->SetDeviceMemory(vbo->GetVkMemory(),prim_name+":VBO:Memory:"+name);
|
||||
du->SetBuffer(vab->GetBuffer(),prim_name+":VBO:Buffer:"+name);
|
||||
du->SetDeviceMemory(vab->GetVkMemory(),prim_name+":VBO:Memory:"+name);
|
||||
}
|
||||
#endif//_DEBUG
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool Primitive::GetVBOAccessData(const AnsiString &name,VBOAccessData *vad)
|
||||
bool Primitive::GetVBOAccessData(const AnsiString &name,VABAccess *vad)
|
||||
{
|
||||
if(name.IsEmpty())return(false);
|
||||
if(!vad)return(false);
|
||||
|
@@ -5,9 +5,9 @@
|
||||
#include<hgl/graph/VKVertexAttribBuffer.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
VBO *RenderResource::CreateVBO(VkFormat format,uint32_t count,const void *data,SharingMode sharing_mode)
|
||||
VAB *RenderResource::CreateVAB(VkFormat format,uint32_t count,const void *data,SharingMode sharing_mode)
|
||||
{
|
||||
VBO *vb=device->CreateVBO(format,count,data,sharing_mode);
|
||||
VAB *vb=device->CreateVAB(format,count,data,sharing_mode);
|
||||
|
||||
if(!vb)
|
||||
return(nullptr);
|
||||
|
@@ -55,12 +55,12 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
VBO *vbo;
|
||||
VAB *vab;
|
||||
|
||||
VertexInputData *vid=new VertexInputData(input_count,prim->GetVertexCount(),prim->GetIndexBufferData());
|
||||
|
||||
const VertexInputFormat *vif=vil->GetVIFList(VertexInputGroup::Basic);
|
||||
VBOAccessData vad;
|
||||
VABAccess vad;
|
||||
|
||||
for(uint i=0;i<input_count;i++)
|
||||
{
|
||||
@@ -73,30 +73,30 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
vbo=vad.vbo;
|
||||
vab=vad.vab;
|
||||
|
||||
if(vbo->GetFormat()!=vif->format)
|
||||
if(vab->GetFormat()!=vif->format)
|
||||
{
|
||||
LOG_ERROR( "[FATAL ERROR] VBO \""+UTF8String(vif->name)+
|
||||
UTF8String("\" format can't match Renderable, Material(")+mtl_name+
|
||||
UTF8String(") Format(")+GetVulkanFormatName(vif->format)+
|
||||
UTF8String("), VBO Format(")+GetVulkanFormatName(vbo->GetFormat())+
|
||||
UTF8String("), VBO Format(")+GetVulkanFormatName(vab->GetFormat())+
|
||||
")");
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
if(vbo->GetStride()!=vif->stride)
|
||||
if(vab->GetStride()!=vif->stride)
|
||||
{
|
||||
LOG_ERROR( "[FATAL ERROR] VBO \""+UTF8String(vif->name)+
|
||||
UTF8String("\" stride can't match Renderable, Material(")+mtl_name+
|
||||
UTF8String(") stride(")+UTF8String::numberOf(vif->stride)+
|
||||
UTF8String("), VBO stride(")+UTF8String::numberOf(vbo->GetStride())+
|
||||
UTF8String("), VBO stride(")+UTF8String::numberOf(vab->GetStride())+
|
||||
")");
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
vid->buffer_offset[i]=vad.offset;
|
||||
vid->buffer_list[i]=vbo->GetBuffer();
|
||||
vid->buffer_list[i]=vab->GetBuffer();
|
||||
++vif;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user